在异步原型函数中未定义 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();

}());


一只甜甜圈
浏览 74回答 1
1回答

慕侠2389804

你不应该使用箭头函数表达式(因为它没有自己的绑定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();}());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript