2010-11-05 23 views
1

我目前正在編寫一個jQuery UI插件並調查現存的jQuery UI源。 在_create手風琴插件的方法this被分配給self(link to source),但是然後在該方法中並排使用thisself。那麼他們爲什麼選擇分配到self呢?在jQuery UI中指定此自我

回答

8

這是關於上下文。在函數本身selfthis中引用相同的對象,但在事件處理程序this引用事件所指向的DOM元素。通過將this的值分配給self,可以讓它們自由地引用這些事件處理程序中的窗口小部件對象或DOM元素。

如果你仔細觀察,你會發現,功能的範圍內,他們在匿名函數使用self專門和時(事件處理程序),他們同時使用thisself來引用DOM元素或窗口小部件,分別。

+0

最近偶然發現了一些我迄今爲止不知道的東西。瀏覽器實際上已經實現了「自己」變量。它是對窗口對象的引用。所以壓倒自我可能不是一個好主意。它讓我進入地獄廚房,因爲從那時起,我正在使用自己,也改變了對窗戶的引用! – philgiese 2012-01-24 14:27:03

2

我不完全知道JQuery UI插件是如何工作的,但我可以想象的是以下情況。我認爲他們想保留對Widget對象的引用而不覆蓋this(更改範圍)。當函數執行時,作用域不再是Widget對象,而是DOM元素。因此,他們可以使用this作爲參考輕鬆添加課程和所有內容。在此之前,他們使用閉包並將值this(現在仍然是解析代碼時的窗口小部件對象)賦值給局部變量self,以解救窗口小部件objcet作用域。現在使用self可以改變對象上的字段。