1
如何從es 6類中的普通成員函數調用靜態函數?在es6中的非靜態成員函數中調用靜態getter javascript class
下面是一個例子:
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)
}
但這總是輸出從動物類的名字,但我想要的是輸出當前類的靜態名稱屬性(例如子類中的「Tiger」)。我怎樣才能做到這一點?
你可以使用'this.constructor.name',至少在你的情況下將工作(靜態成員是構造函數的屬性和[Object.prototype.constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor)正在幫助你療法E)。但是,我不確定這是否是最好的/最乾淨的解決方案。 – ASDFGerte
爲什麼它是靜態的? –