我目前正在编写一个jQuery UI插件,因此调查现有的jQuery UI源代码。
在手风琴插件的_create
方法this
已分配给self
(link to source),但this
和self
并排使用在那种方法中。那么为什么他们选择分配给self
呢?
答案 0 :(得分:8)
这完全取决于背景。在函数本身self
和this
中引用相同的对象,但在事件中,处理程序this
引用事件所针对的DOM元素。通过将this
的值赋给self
,可以让它们自由地引用窗口小部件对象或这些事件处理程序中的DOM元素。
如果仔细观察,您会注意到在函数的上下文中,它们只使用self
,而在匿名函数(事件处理程序)中,它们同时使用this
和self
分别引用DOM元素或Widget。
答案 1 :(得分:2)
我不完全知道JQuery UI插件是如何工作的,但我能想象的是以下场景。我认为他们希望保留对Widget对象的引用而不覆盖this
(更改范围)。执行该函数时,范围不再是Widget对象,而是DOM元素。因此,他们可以使用this
作为参考轻松添加类和所有内容。在此之前,他们使用闭包来拯救小部件objcet范围,并将this
(现在仍然是解释代码的小部件对象)的值分配给局部变量self
。现在使用self,他们可以更改对象上的字段。