如何解决在异步原型函数中未定义
我的问题类似于this。但是我想将async关键字放入原型函数,而不是构造函数。
“ this”在原型函数saySomething中未定义。为什么?如何在课堂上使用异步?
var Person = function() {
console.log("CALLED PERSON")
};
Person.prototype.saySomething = async () => {
console.log(this);//undefined
};
(async function(){
var ape = new Person();
await ape.saySomething();
}());
解决方法
您不应该使用arrow function expressions(因为它没有对this
的绑定),而是使用regular function expression:
var Person = function() {
console.log("CALLED PERSON")
};
Person.prototype.saySomething = async function() {
console.log(this);
};
(async function(){
var ape = new Person();
await ape.saySomething();
}());
或使用class的另一个示例(@nickf建议):
class Person {
constructor() {
console.log("CALLED PERSON")
}
async saySomething() {
console.log(this);
};
}
(async function(){
var ape = new Person();
await ape.saySomething();
}());
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。