我的问题与此类似。但我想将 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();}());
1 回答
慕侠2389804
TA贡献1719条经验 获得超6个赞
你不应该使用箭头函数表达式(因为它没有自己的绑定this
),而是一个正则函数表达式:
var Person = function() {
console.log("CALLED PERSON")
};
Person.prototype.saySomething = async function() {
console.log(this);
};
(async function(){
var ape = new Person();
await ape.saySomething();
}());
或另一个使用类的示例(如@nickf 所建议的):
class Person {
constructor() {
console.log("CALLED PERSON")
}
async saySomething() {
console.log(this);
};
}
(async function(){
var ape = new Person();
await ape.saySomething();
}());
添加回答
举报
0/150
提交
取消