0
我正在寫一個Mootools插件,並且無法理解範圍問題。一些代碼來傳達我的上下文:Mootools/Javascript範圍問題
var pluginName = new Class({
implements: [ Options ],
initialize: function(paramOne, options) {
this.setOptions(options);
},
someFunction: function() {
$$('menu').each(function(menu) {
// SCOPE OF INTEREST
});
}
};
我不知道是否有訪問該選項在我寫的「利益範圍」的範圍對象的方式。我知道一個辦法是在someFunction的開頭設置一個變量,像這樣:
someFunction: function() {
var optionIWantToAccess = this.options.relevantOption;
$$('menu').each(function(menu) {
// now optionIWantToAccess is available here
});
}
但這似乎有點笨拙,一個更好的選擇的氣味。這個問題的更一般的版本是:我可以在Mootools迭代器中訪問類級作用域(不確定這是否是正確的術語......但是初始化函數內部的作用域就是我所說的內容)?
任何幫助,將不勝感激。
謝謝。
幾件事情。 mootools原型函數並添加'bind'(如果本地不可用)。其次,'Array.each'在回調函數後面接受第二個參數,也就是'bind',這樣你就可以做'array.each(fn(){this.something();},this);'where'this''是你綁定的範圍,但它可以是任何你需要它 - 這是最乾淨/最可讀的方式去做 – 2011-05-23 20:41:26
這聽起來很方便! – 2011-05-23 20:47:52
另外,請查看'Binds' mutator,這是一個更好的/更清晰的綁定範圍方式。 – 2011-05-23 21:15:31