2017-01-17 7 views
3
export class InvalidCredentialsError extends Error { 
    constructor(msg) { 
    super(msg); 
    this.message = msg; 
    this.name = 'InvalidCredentialsError'; 
    } 
} 

Как вы можете видеть выше, я пишу InvalidCredentialsError дважды. Есть ли способ каким-то образом получить имя класса уже в методе конструктора и установить его? Или объект должен быть создан?Получить имя класса в конструкторе

+1

Вы ищете [this.co nstructor.name] (http://stackoverflow.com/questions/10314338/get-name-of-object-or-class-in-javascript)? – CodingIntrigue

+0

@CodingIntrigue 'this.constructor.name' возвращает« Ошибка ». –

+0

Странно. Это может быть проблемой с подклассификацией 'Error', потому что я не понимаю, почему он не возвращает текущее имя класса. – CodingIntrigue

ответ

3

В браузерах с поддержкой класса ES6 this.constructor.name отобразит InvalidCredentialsError. Если вы переведёте код с помощью 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');

С Вавилонской:

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

 
const instance = new InvalidCredentialsError('message');

Смежные вопросы