Как я могу вызвать статическую функцию из обычной функции-члена в классе es 6?
Вот пример:
class Animal {
constructor(text) {
this.speech = text;
}
static get name() {
return "Animal";
}
speak() {
console.log( this.name + ":"+ this.speech)
}
}
class Tiger extends Animal {
static get name() {
return "Tiger"
}
}
var animal = new Animal("hey there");
animal.speak();
var tiger = new Tiger("hello");
tiger.speak();
// output:
// undefined:hey there
// undefined:hello
Я мог бы изменить функцию разговора, чтобы вернуться
speak() {
console.log( Animal.name + ":"+ this.speech)
}
Но это всегда будет выводить имя из класса животных, но я хочу вывести свойство статического имени текущего класса (например, «Тигр» в подклассе). Как я могу это сделать?
this.constructor.name
, по крайней мере, в вашем случае это будет работать (статические члены являются свойствами функции-конструктора и Object.prototype.constructor). Однако я не уверен, является ли это лучшим/самым чистым решением. - person ASDFGerte   schedule 04.01.2017