2013-03-26 37 views

回答

2

在該示例中,this引用處理程序綁定到的DOM元素。我建議閱讀the excellent articles at quirksmode.org,這解釋了這一點以及更多關於事件處理的內容。

就是在第一種情況下,你不第二種情況<td id='xyz' onmouseover='doIt(this)'...<td id='xyz' onmouseover='doIt()'...

之間的差異要傳遞參數的功能,這是一個DOM元素。

3

瀏覽器調用構造的處理函數,使得this引用該事件定位的DOM元素。因此,this僅僅是對這個屬性出現的DOM元素的引用。

0

你問「有什麼區別」。不同的是,在第一種情況下,調用是從執行上下文中進行的,其中this是元素的引用,並且該引用作爲第一個參數傳遞給doIt。在第二種情況下,不傳遞任何參數。

現在爲什麼。

當一個事件到達一個元素時,相關的處理程序會看看是否有任何代碼要運行。如果存在,它將創建一個新的執行上下文,就好像在其作用域鏈上的全局對象的函數代碼中一樣,並將綁定設置爲該元素。它會執行代碼。因此,當代碼處理程序的執行上下文中:

doIt(this) 

執行,this引用的元素。請注意,由於this在調用doIt()時未設置,因此其this將在非嚴格模式下默認爲全局對象,或在嚴格模式下保持未定義狀態。

相關問題