在Javascript中,通常的理解是,您不應該修改您不屬於的對象。我理解並同意這些論點。儘管如此,我正在考慮添加Event對象的一些屬性。首先,我會寫一點背景知識,以及後面的內容,然後我希望能夠通過專業和專業的方式從您那裏獲得一些智能反饋。使用Javascript修改事件對象
我寫過一個事件管理器,它有像addEvent,removeEvent等方法。當事件被觸發時,我將調用處理程序,將事件對象傳遞給eventlisteners註冊時傳入的事件處理程序。
在傳遞事件對象之前,我將爲事件對象添加一些屬性。例如; 「hotKey」 - 具有諸如「shift-c」,「alt-d」或「meta-a」等可能的值。 (最後一個對應於Window上的「ctrl-a」和MacOS上的「cmd + a」等。換句話說,根據操作系統,它將正確匹配,並且處理程序邏輯模式不需要關心它是否處於開啓狀態哪個操作系統或它是什麼元鍵)
其含義是處理程序代碼變得更小,這要歸功於所有需要的「if-then」語句已由事件管理器執行,例如當與關鍵相關的事件已經被解僱。事件處理程序幾乎需要有一個switch-statement並且做有趣的事情。
除了hotKey屬性,我還計劃添加一些其他屬性,主要是爲了簡化事件處理函數,從而消除事件處理程序通常執行的邏輯。爲了避免命名colissions,我可能會將這些新屬性添加到子ojbect中。換句話說,這些屬性不需要是頂級屬性。
我正在執行此操作,但我希望獲得我可能沒有想到的見解。
加成
的問題是,別人怎麼想下面的執行。這要求傳遞給處理程序的事件對象需要修改。我在問這個問題,因爲我實際上正在修改一個我不擁有的對象......但在這種情況下,這樣做有好處。
addEvent(document, "keyup", function(event) {
switch (event.hotKey) {
case 'meta-c':
// code here
break;
case 'meta-a':
// code here
break;
}
});
如果你只是問是否可以修改事件對象,我認爲這是屬於[codereview](http://codereview.stackexchange.com/) – Esailija