我在其中得到的回調函數的陣列和該函數設置的事件名稱的對象的成員函數:如何將'callbacks'數組參數傳遞給匿名函數?
...
setHandlesByList: function (list) {
for (var i in list) {
var self = this;
$(document).on(list[i].name, function (e) {
list[i].callBack.call(self,e)
});
};
},
...
某處在子對象我有這個函數的調用父對象:
...
initClass: function() {
this.setHandlesByList([
{ name: 'configChecked', callBack: onConfigChecked },
{ name: 'configExpired', callBack: onConfigExpired },
]);
},
onConfigChecked: function() {
// some code
},
onConfigExpired: function() {
// some code
},
....
但不順心的事 - 所有事件的處理程序是最後一組回調函數...
**哇是那個難以閱讀的縮進。 –
您可以嘗試'$(document).on(list [i] .name,list [i] .callBack.bind(this))'或使用閉包,因爲您的當前impl有一個共享變量'i' 。 – PSL
@PSL,'$ .proxy'是jQuery向後兼容的'Function.prototype.bind'實現,它還有一些對事件綁定有用的附加功能。 – zzzzBov