Вопрос о Mootools / Javascript - PullRequest
0 голосов
/ 24 мая 2011

Я пишу плагин 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?

Любая помощь по этому вопросу будет принята с благодарностью.

Спасибо.

1 Ответ

3 голосов
/ 24 мая 2011

Вы можете привязать функцию к экземпляру.

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

Функция привязки # недоступна в старых браузерах, но добавить поддержку для нее очень просто.

...