为了账号安全,请及时绑定邮箱和手机立即绑定

在异步原型函数中未定义 this

在异步原型函数中未定义 this

一只甜甜圈 2022-12-29 16:25:41
我的问题与此类似。但我想将 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();

}());


查看完整回答
反对 回复 2022-12-29
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信