TypeError:无法读取undefined的属性'mytest'

问题描述 投票:1回答:1

我正在使用swagger api,当我调用终点时它说错误Cannot read property 'mytest' of undefined

class User {
  private mytest(req:any, res:any, next:any){
    return res.json('test32423423');

  }
  public loginByJSON(req: any, res: any, next: any) {
    this.mytest(req,res,next);
  }
}

const user = new User();
export = {
  loginByJSON: user.loginByJSON
};
typescript swagger
1个回答
1
投票

使用JavaScript处理函数上下文(this)的方式,如果重新分配函数,它将获取分配给它的对象的上下文。也就是说this实际上会引用您正在创建的对象。

有几种方法可以解决这个问题,主要是围绕保持对象实例的上下文。

{
  loginByJSON: user.loginByJSON.bind(user),
}

您还可以使用实例绑定方法:

loginByJSON = (req: any, res: any, next: any) => {
  this.mytest(req, res, next);
}

然后该方法将始终绑定到该实例。这样做的缺点是为每个实例创建了一个新函数,但.bind无论如何都会这样做,在这种情况下,你似乎只是出于组织目的这样做而且只创建一次实例。

© www.soinside.com 2019 - 2024. All rights reserved.