2013-05-06 94 views
1

我想提出一個自定義事件對象,以便我可以注入自定義事件到另一個物體,到目前爲止,我還(簡體),另一個對象的Javascript自定義事件對象?

function Game() { 

    new Events(["pause", "resume"], this); 
}; 

function Events(events, obj) { 

    // Event object for object 
    obj.events = {}; 

    // For each event 
    events.forEach(function(event) { 

     // Attach event array to store callbacks 
     this.events[event] = []; 

    }, obj); 

    // Fire event 
    obj.fire = function(event) { 

     //////////// 
    }; 

    // Add event 
    obj.on = function(event, callback) { 

     //////////// 
    }; 
}; 

我的問題是,這是做到這一點的正確方法?是否認爲從Game撥打Event並從Events增加到Game?由於某種原因,我似乎錯了,我不知道爲什麼?

有沒有什麼方法可以構建我不知道的代碼?

(我不希望添加到EventsGame的原型的唯一原因,Game有事件和不是Events擴展)

感謝您百忙之中閱讀我的問題的時間。

回答

2

我的問題是,這是正確的方法嗎?從遊戲中調用事件並添加到事件中的遊戲可以嗎?

是的,它非常好。這被稱爲decorator pattern。我沒有看到你覺得這是錯的理由。

有沒有什麼辦法可以構建我不知道的代碼呢?

請勿使用newEvents不是構造函數。更好,更描述性的簽名可能是

function makeEventEmitter(obj, events) { 
+0

所以這是不正確的做法,但你告訴他們正確的方式(不需要新) – 2013-05-06 17:02:27

+0

@Juan:圖案(他感覺錯了)是好的,只有他有語法問題。我的意思是,因爲他沒有儲存'new'調用的結果,所以它實際上並不重要(除了誤導和超快) – Bergi 2013-05-06 17:11:25

+0

謝謝你@Bergi,我明白爲什麼我現在不應該使用'新'謝謝指出。我不知道從哪裏開始嘗試爲定製事件創建某種系統,並以此結束,所以要知道,除了一些語法問題之外,它確實令我滿意!再次感謝。 – user2251919 2013-05-06 17:20:56

相關問題