[英]Set multiple options javascript (MooTools) object at once
我有這樣的東西
var obj = new someClass(el, {
onOne: function () {
doThis();
},
onTwo: function () {
doThis();
},
onThree: function () {
doThis();
},
onFour: function () {
doThat();
}
});
因此,前三個事件將具有相同的結果,只有第四個事件是不同的。 這樣,似乎有點重復,所以我希望我可以做這樣的事情
var obj = new someClass(el, {
onOne:
onTwo:
onThree: function () {
doThis();
},
onFour: function () {
doThat();
}
});
但是我不能。
我想知道,是否有某種方法可以做類似的事情(無需更改類本身)。 在思想上,它將使代碼更清晰,更易於維護。
如何預定義功能?
var myHandler = function() {
doThis();
};
var obj = new Class(el, {
onOne: myHandler,
onTwo: myHandler,
onThree: myHandler,
onFour: function () {
doThat();
}
});
如果您知道對象的鍵,則可以另外嘗試使用for
循環,例如
var passIt = {
onFour: function() {
doThat();
}
};
var keys = ['onOne', 'onTwo', 'onThree'];
var l = keys.length;
for (var i = 0; i < l; i++) {
passIt[keys[i]] = myHandler;
}
var obj = new Class(el, passIt);
函數是JavaScript世界中的一等公民 。 除非您在匿名函數中省略了額外的處理,否則以下內容應該起作用:
var obj = new Class(el, {
onOne : doThis
, onTwo : doThis
, onThree : doThis
, onFour : doThat
})
它創建了三個方法別名doThis
上obj
,命名onOne
, onTwo
和onThree
,和方法別名doThat
對obj
命名onFour
。
當您調用obj.onOne(...)
,它等效於 doThis.call(obj, ...)
。
注意 :我不確定您的示例中是否正確使用了MooTool的Class()
構造函數。 閱讀文檔時 ,看起來就像Class
只不過有一個參數,即新創建的對象將繼承的一個properties
對象(或函數)。 如果代碼不起作用,請嘗試刪除el
並向對象文字添加'Extends' : el
屬性。 不過,我從來沒有親自使用過MooTools,所以我不確定會發生什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.