Mootools/Javascript范围问题

Mootools/Javascript scope question

本文关键字:问题 范围 Javascript Mootools      更新时间:2023-09-26

我正在编写一个Mootools插件,但很难理解范围界定问题。一些代码来传达我的上下文:

var pluginName = new Class({
   implements: [ Options ],
  initialize: function(paramOne, options) {
    this.setOptions(options);
  },
  someFunction: function() {
    $$('menu').each(function(menu) {
      // SCOPE OF INTEREST
    });
  }
};

我想知道是否有一种方法可以访问我写过"兴趣范围"的范围中的选项对象。我知道一种方法是在某个函数的开头设置一个变量,比如

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

但这似乎有点笨拙,而且闻起来是一个更好的选择。这个问题的一个更通用的版本是:我可以访问Mootools迭代器中的类级作用域吗?

如有任何帮助,我们将不胜感激。

谢谢。

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

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

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