- 此问题在此处已有答案**:
(13个答案)
How does the "this" keyword work, and when should it be used?(22个答案)
3天前关闭.
async sendPostMessageForExit() {
try {
this.$mNprogress.show();
await this.$store.dispatch(user/logout");
this.$mNprogress.hide();
this.postMessageExit();
} catch (error) {
handleGeneralError(error);
this.$mNprogress.hide();
this.postMessageExit();
}
},
让自我=这个;我做的时候可以访问它,但我想知道为什么我不能直接访问它。
1条答案
按热度按时间jxct1oxe1#
因为'this'没有绑定到函数。像这样定义的函数有一个动态作用域,这意味着它取决于你如何和在哪里调用它。我对Vue不是很熟悉,但我猜如果你从视图调用这个函数,它的'this'将引用那个作用域,而不是这个函数所属的类。
解决方案:
1.尝试使用arrow函数代替,它将具有Lexical作用域,即当您定义函数时。例如
sendPostMessageForExit = async () => {...
1.将
this
绑定到类构造函数内部的函数(即sendPostMessageForExit = sendPostMessageForExit.bind(this)
)1.像您一样使用
const self = this