Присвойте это себе в jQuery UI

1

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

Теги:
this
variable-assignment

2 ответа

8
Лучший ответ

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

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

  • 0
    Недавно наткнулся на то, чего я до сих пор не знал. Браузеры на самом деле уже реализуют переменную self. Это ссылка на объект окна. Так что превосходство над собой может быть плохой идеей. Это привело меня в адскую кухню, потому что с того момента, как я использовал self, также изменилась ссылка на окно!
2

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню