在构造函数中获取类名

时间:2017-01-17 13:28:37

标签: ecmascript-6

export class InvalidCredentialsError extends Error {
  constructor(msg) {
    super(msg);
    this.message = msg;
    this.name = 'InvalidCredentialsError';
  }
}

如上所示,我正在写InvalidCredentialsError两次。有没有办法以某种方式在构造函数方法中获取类名并设置它?或者该对象是否必须实例化?

1 个答案:

答案 0 :(得分:4)

在具有原生ES6类支持的浏览器中,this.constructor.name将显示 InvalidCredentialsError 。如果您使用Babel转换代码,则会显示错误

不使用Babel(在Chrome或其他支持类的浏览器上使用):



class InvalidCredentialsError extends Error {
  constructor(msg) {
    super(msg);
    console.log(this.constructor.name);
    this.message = msg;
    this.name = 'InvalidCredentialsError';
  }
}

const instance = new InvalidCredentialsError('message');




使用Babel:



class InvalidCredentialsError extends Error {
  constructor(msg) {
    super(msg);
    console.log(this.constructor.name);
    this.message = msg;
    this.name = 'InvalidCredentialsError';
  }
}

const instance = new InvalidCredentialsError('message');