在我的程序中,使用function()
語法返回目標元素的this
值,但使用箭頭函數返回窗口對象。這兩個函數中的每一個如何得到他們的this
?箭頭函數將此作爲窗口對象返回
function editTemplates() {
//sits within for loop
clocksTemplate.gmt[i].addEventListener('keydown', (e) => {
console.log(this); //returns window object
});
clocksTemplate.gmt[i].addEventListener('keydown', function(e) {
console.log(this); //returns element bound to clocksTemplate.gmt
});
據MDN與箭頭功能,這應該「保留從封閉的上下文本義」。封閉上下文是事件偵聽器嗎?或者它所在的功能?根據我的測試,箭頭函數的封閉上下文必須是Window對象,但我看不到。使用函數()語法封閉函數是爲了重新定義這個值,我假設它在addEventListener
方法中執行。這個主題已被深入討論here和here,但我是一個JS新手,我不明白這是如何適用於我的問題。
箭頭函數將綁定當前作用域的'this',而'addEventListener'將'this'作爲綁定元素 – Rajesh