例如,<td id='xyz' onmouseover='doIt(this)'...
和<td id='xyz' onmouseover='doIt()'...
之間的區別是什麼。 DOM元素是this
嗎?「this」在「on ..」屬性中的函數內引用了什麼?
1
A
回答
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元素的引用。
2
this
將引用DOM元素,在您的示例中爲td
DOM元素。
查看MDN page on event handlers瞭解更多信息,特別是關於inline event handlers的部分。
0
你問「有什麼區別」。不同的是,在第一種情況下,調用是從執行上下文中進行的,其中this
是元素的引用,並且該引用作爲第一個參數傳遞給doIt
。在第二種情況下,不傳遞任何參數。
現在爲什麼。
當一個事件到達一個元素時,相關的處理程序會看看是否有任何代碼要運行。如果存在,它將創建一個新的執行上下文,就好像在其作用域鏈上的全局對象的函數代碼中一樣,並將綁定設置爲該元素。它會執行代碼。因此,當代碼處理程序的執行上下文中:
doIt(this)
執行,this
引用的元素。請注意,由於this
在調用doIt()
時未設置,因此其this
將在非嚴格模式下默認爲全局對象,或在嚴格模式下保持未定義狀態。
相關問題
- 1. 「this」關鍵字在Java的「.addActionListener(this)」中引用了什麼?
- 2. 在函數中引用(this)
- 3. 如何在函數內創建2`this`引用在函數內
- 4. 「this」在ES6的箭頭函數中提到了什麼?
- 5. 爲什麼我不能在內部函數中使用「this」?
- 6. 「this()」在構造函數中做了什麼?
- 7. Javascript:此屬性函數中的引用
- 8. 隱式「this」在匿名類中引用了什麼?
- 9. 'this'關鍵字在Asp.Net Page Class中引用了什麼?
- 10. 「this」在以下javascript中引用了什麼?
- 11. 「this」在JavaScript寄生繼承中引用了什麼?
- 12. 「this」在React組件中引用了什麼?
- 13. 什麼是引用屬性?
- 14. setOnClickListener中的this關鍵字引用了什麼?
- 15. Javascript - 在函數內使用$(this)函數?
- 16. 內置函數中發生了什麼?
- 17. 爲什麼我們不能在內部函數中訪問'this'?
- 18. 爲什麼在JavaScript中使用'this'時聲明瞭引用繼承參數的函數?
- 19. Python:一些「__magic__」屬性來引用該函數內的函數
- 20. 這是什麼語法:在C#中使用「this」屬性?
- 21. 爲什麼在函數定義之外引用靜態變量(函數屬性)?
- 22. JavaScript中的'this'是什麼引用?
- 23. 在Javascript構造函數中使用'this'來訪問屬性
- 24. 此字符串在X500Principal構造函數中引用了什麼?
- 25. 這在JavaScript函數中引用了什麼?
- 26. undefined在javascript函數原型中引用了什麼
- 27. 函數構造函數是否支持用`this`計算屬性?
- 28. 爲什麼jQuery的`$(this)`引用了正確的節點?
- 29. AS3:爲什麼「this」會在函數內部改變它指的是什麼?
- 30. 在Javascript中引用包含'this'引用的另一個函數