Как работает 'this' в простой функции jquery? - PullRequest
2 голосов
/ 29 июня 2010

У меня возникли проблемы с пониманием этого кода:

$.functionone = function(){
  function setOptions(newOptions){
      ...
  }
  this.setOptions = setOptions;
}

для чего добавляется слово this в this.setOptions?Я понимаю, что она ссылается на функцию setOptions, но делает ли добавление «this» функцией вызов?Я знаю, что это относится к элементу DOM, но какой смысл иметь его в этом конкретном сценарии.Спасибо.

Ответы [ 3 ]

3 голосов
/ 29 июня 2010

Это просто выставит функцию из области действия functionone, чтобы быть свойством объекта $.

Например:

$.functionone = function(){

  function setOptions(newOptions){
    //...
  }
  this.setOptions = setOptions;
};

typeof $.setOptions; // "undefined", it doesn't exist
$.functionone();
typeof $.setOptions; // "function"

Значение this в JavaScript устанавливается неявно при выполнении вызова функции.

Если функция связана как свойство объекта (например, $.functionone), значение this будет ссылатьсяк базовому объекту ($ в вашем примере).

Это не очень полезно IMO, это эквивалентно:

$.functionone = function(){
  this.setOptions = function (newOptions) {
    //...
  };
};

, который находится в конце,когда вы вызываете functionone, эквивалентно:

$.setOptions = function (newOptions) {
  //..
};

Разница в том, что функция не названа, что может быть полезно для отладки.

Работа со значением this наПлагины jQuery более обычны, когда вы расширяете объект jQuery.fn, в этом случае значение this относится к объекту jQuery, который содержит сопоставленные элементы, а не к самому конструктору jQuery.

1 голос
/ 29 июня 2010

Код создает функцию и добавляет ее как свойство "setOptions" элемента DOM.

Предположительно, какая-то другая часть кода будет знать, что нужно искать функцию "setOptions" в элементе DOM и выполнять ее.

0 голосов
/ 29 июня 2010

this относится к конкретному элементу DOM, который вызвал функцию.

Следующая строка:

this.setOptions = setOptions;

Означает, что функция "setOptions" назначена свойству "setOptions"элемента DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...