微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mootools / Javascript范围问题

如何解决Mootools / Javascript范围问题

| 我正在编写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
    });
  }
但这似乎比较笨拙,而且味道更好。这个问题的一个更一般的版本是:我可以在一个类的内部访问类级别的范围(不确定这是否是正确的术语。。。但是,initialize函数内部的范围正是我在说的)。 Mootools迭代器? 任何帮助,将不胜感激。 谢谢。     

解决方法

您可以将函数绑定到实例。
someFunction: function() {
  $$(\'menu\').each(function(menu) {
    // \'this\' is still the original instance
    this.options.relevantOption;
  }.bind(this))
}
Function#bind在旧的浏览器中不可用,但是添加对它的支持非常简单。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。