Присвойте это себе в jQuery UI - PullRequest
1 голос
/ 05 ноября 2010

В настоящее время я пишу плагин jQuery UI и поэтому изучаю существующие источники jQuery UI.В методе _create плагина аккордеона this присваивается self (ссылка на источник) , но тогда оба значения this и self используются в этом методе бок о бок.Так почему же они решили присвоить self вообще?

Ответы [ 2 ]

8 голосов
/ 05 ноября 2010

Все дело в контексте. В самой функции self и this ссылаются на один и тот же объект, но в обработчиках событий this ссылается на элемент DOM, на который нацелено событие. Присваивая значение this self, он освобождает их для ссылки на объект виджета или на элемент DOM в этих обработчиках событий.

Если вы посмотрите внимательно, то заметите, что в контексте функции, которую они используют исключительно self, а в анонимных функциях (обработчиках событий) они используют this и self для ссылки на элемент DOM. или виджету соответственно.

2 голосов
/ 05 ноября 2010

Я точно не знаю, как работают плагины JQuery UI, но я могу представить следующий сценарий. Я думаю, что они хотели сохранить ссылку на объект Widget без перезаписи this (изменение области видимости). Когда функция выполняется, область видимости больше не является объектом Widget, а является элементом DOM. Поэтому они могут легко добавлять классы и все, используя this в качестве ссылки. Прежде чем это произойдет, они спасают область виджета объекта, используя замыкание и присваивая значение this (теперь оно остается объектом виджета, когда код интерпретируется) локальной переменной self. Теперь используя self, они могут изменять поля на объекте.

...