如何从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)
}
但是这总是从Animal Class输出名称,但我想要的是输出当前类的静态名称属性(例如子类中的“Tiger”)。我怎么能这样做?
答案 0 :(得分:2)
将非静态get name()
添加到返回Animal
的{{1}}类:
this.constructor.name
get name() {
return this.constructor.name;
}