问题描述
我的问题类似于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();
}());