javascript - Mootools/Javascript 范围问题

标签 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
    });
  }
};

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

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

但这看起来有点笨拙,而且似乎是一个更好的选择。这个问题的一个更通用的版本是:我可以在 Mootools 迭代器内访问类级作用域(不确定这是否是正确的术语......但初始化函数内的作用域就是我所说的)?

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

谢谢。

最佳答案

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

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

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

关于javascript - Mootools/Javascript 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6102485/

相关文章:

c# - 如何在 mootools 中传递对象本身(就像我们在 C# 中所做的那样)?

java - 在同一包中的已编译类中看不到静态方法

javascript - JS : Assigning a variable in the parent scope of a closure costs performance. 为什么?

javascript - jQuery POST,错误 405 方法不允许

javascript - 函数参数作为字符串但作为函数执行?

javascript - 无法让简单的 Bootstrap 模式工作

jquery - JSON.stringify() - 转义问题

php - 使用 Jquery Ajax 后 mootools AJAX 出现问题

函数结束后的 C++ 变量

javascript - 如何使用php获取链接标签的标题