在javascript中進行開發時,我花了很多時間來弄清函數之間傳遞了哪些參數。所以我今天嘗試了一種新方法。我創建了一個簡單的對象,然後定義事件名稱和參數。自定義JavaScript事件對象?
var GreetingEvent = {
HELLO: 'hello',
'arguments': {
name: null
}
}
// dispatch
// pseudo code
this.fireEvent(new MyEvent(GreetingEvent.HELLO,"myname"));
// listening
// pseudo code
this.listenToEvent(GreetingEvent.HELLO, this.onGreetingEvent);
我確定其他人已經經歷過我的情況。
您的情況和解決方案是什麼?
更新:
這是我怎樣,我現在的編碼。
// dispatch
// pseudo code
this.fireEvent('hello',{name:'myname'});
// listening
// pseudo code
this.listenToEvent('hello', this.onGreetingEvent);
這段代碼的問題是,我的同事必須打開我的代碼,找出論據正在傳遞什麼他們的聽衆或者他們必須使用的console.log()。其實很好。我只是想找到更好的方法。
我很高興看到你改變了你的風格。我很困惑這是什麼東西給你買的。你仍然指的是一個事件名稱,它是一個字符串 - 爲什麼將它隱藏起來? – andyortlieb 2012-02-14 04:44:08
@andyortlieb //我遇到了必須更改事件名稱的情況。事件被用於許多文件..所以我不得不打開許多文件,然後更改事件名稱,然後再次測試代碼。然後,我的同事(閃存開發人員)建議我改用事件對象。我認爲這是個不錯的主意,我剛剛得知flash,c#和其他語言以這種方式使用事件。我真的不能完全回答你的問題,因爲我試圖找出答案。 – Moon 2012-02-14 04:58:19
從可維護性的角度來看,這是有道理的......但是我仍然認爲,如果你只是爲了方便地改變名稱和保持向後兼容性而在你的fire和handlers上引用一個命名對象屬性 - 這仍然會從長遠來看,這會令人大惑不解。對象屬性的名稱應該與事件的名稱一樣清晰,如果需要更改事件的名稱,則應該重命名對象屬性,所以我想我仍然錯過了這一點。 – andyortlieb 2012-02-14 16:18:25