js 中的 this
add_listening_events() {
let outer = this;
this.playground.game_map.$canvas.on("contextmenu", function() {
return false;
});
这里为什么要定义一个outer,外面的this和回调函数中的不同吗?
在JavaScript中,this的值取决于函数的调用方式。在事件处理函数(如on(“contextmenu”, function() { … }))中,this通常会指向触发事件的DOM元素,而不是原来的对象(在这里是outer所指向的对象)。
更好的写法(使用箭头函数):
如果你使用箭头函数,就不需要定义outer,因为箭头函数不会改变this的指向:
add_listening_events() {
this.playground.game_map.$canvas.on("contextmenu", () => {
this.handleRightClick(); // 直接使用this,指向原来的对象
return false;
});
}
箭头函数中的this会继承外层作用域的this,因此可以直接访问原来对象的属性和方法。