Mootools / Javascript范围问题

时间:2011-05-23 20:14:19

标签: javascript mootools scope

我正在编写一个Mootools插件,无法理解范围问题。一些代码来传达我的背景:

var pluginName = new Class({
   implements: [ Options ],

  initialize: function(paramOne, options) {
    this.setOptions(options);
  },

  someFunction: function() {
    $$('menu').each(function(menu) {
      // SCOPE OF INTEREST
    });
  }
};

我想知道是否有办法访问我写的“SCOPE OF INTEREST”范围内的选项对象。我知道一种方法是在someFunction的开头设置一个变量,如下所示:

someFunction: function() {
    var optionIWantToAccess = this.options.relevantOption;
    $$('menu').each(function(menu) {
      // now optionIWantToAccess is available here
    });
  }

但这看起来有点笨拙,闻起来更好。这个问题的一个更通用的版本是:我可以在Mootools迭代器中访问类级别的范围(不确定这是正确的术语......但初始化函数中的范围是我所说的)吗? / p>

对此的任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以将该函数绑定到实例。

someFunction: function() {
  $$('menu').each(function(menu) {
    // 'this' is still the original instance
    this.options.relevantOption;
  }.bind(this))
}

函数#bind在旧版浏览器中不可用,但添加对它的支持非常简单。