addEventListener this 指向问题

by acdzh · 2021年8月19日12:26 · 11 WORDS  ·  ~ 1 mins reading time · 0  Visitors | 

先看一段代码:

class A {
constructor() {
this.msg = "I am class A";
window.addEventListener('message', this.onmsg, false);
}
onmsg() {
console.log(this.msg);
}
}
window.msg = "This is window";
const a = new A();
window.postMessage('test');

输出的结果是 This is window. 这是因为这里 addEventListener 中的事件函数 onmsgthis 实际上 window 而不是 a. 如果想明确 this 的话, 需要指定 this 的指向.

class A {
constructor() {
this.msg = "I am class A";
window.addEventListener('message', this.onmsg.bind(this), false);
}
onmsg() {
console.log(this.msg);
}
}
window.msg = "This is window";
const a = new A();
window.postMessage('test');

VersionActionTime
1.0Init2021-08-19 20:26:03
随便写写 © 2022 acdzh