這個問題在這里已經有了答案: 如何在回呼中訪問正確的 `this` 13 個答案 3 小時前關閉。
我在一個復選框上有一個事件監聽器,它使用“this”傳遞一些引數,但是由于某種原因它不起作用。
將“this”發送到控制臺后,我可以看到,與用于文本輸入和選擇節點的其他事件偵聽器不同,它回傳整個視窗物件
我正在使用的代碼:
document.getElementById("nightMode").addEventListener('change', () => {
console.log(this)
})
我希望在控制臺中看到的內容:
<input id="nightMode" type="checkbox" />
實際發送到控制臺的內容:
Window {window: Window, self: Window, document: document, name: '', location: Location, …}
uj5u.com熱心網友回復:
這是因為您使用的是箭頭函式 ( () => { ... })。將其替換為普通函式 ( function() { ... })。
箭頭函式沒有this自己的 a。它不能改變;this箭頭函式內部將始終指向函式宣告時的任何時間this點。
uj5u.com熱心網友回復:
請改用此代碼:
<input id="nightMode" type="checkbox" onchange="alert(this)">
uj5u.com熱心網友回復:
那是因為當您使用箭頭函式時,您已經this將全域范圍( Window )系結到您的處理函式。
嘗試改用普通函式宣告: function () { ... }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418667.html
標籤:
