是否可以获得" old"这个,就像你得到函数()?
addEventListener("click", () => { console.log(this) }) // {}
addEventListener("click", function() => { console.log(this) }) // EventEmitter /.../
答案 0 :(得分:1)
JavaScript中的箭头函数不会创建新的上下文,因此不会生成“新”或“旧”this
。他们正在使用其定义范围内的任何内容。
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions:
箭头功能没有自己的
this
;使用封闭执行上下文的this
值。
此行为与其他语言中的lambda函数完全相同。
答案 1 :(得分:0)
我的问题不清楚。
如果您想要当前点击的元素,请在活动中使用属性currentTarget
:
addEventListener("click", (e) => { console.log(e.currentTarget) })
如果您想要上一个this
,请先存储它:
var that = this;
addEventListener("click", () => { console.log(that) })
答案 2 :(得分:0)
我不相信有一种方法可以让箭头功能像这样 - 保留当前this
就是为它设计的。
最佳解决方案是在需要向function() {}
提供时使用this
。