[英]Can a instance method in a Javascript subclass call it's parents static method?
這行不通。 JS中的子類是否可以訪問其父類的靜態方法?
class Person {
constructor() {}
static isHuman() {
return 'yes I am';
}
}
class Brian extends Person {
constructor() {
super();
}
greeting() {
console.log(super.isHuman())
}
}
const b = new Brian();
b.greeting();
對於靜態方法,請使用類名稱,而不要使用super。
class Person { constructor() {} static isHuman() { return 'yes I am'; } } class Brian extends Person { constructor() { super(); } greeting() { console.log(Person.isHuman()) } } const b = new Brian(); b.greeting();
是的你可以。 您可以使用super
但要獲取靜態方法,您必須訪問它的構造方法屬性:
super.constructor.isHuman()
您也可以直接使用類名:
Person.isHuman();
//this works because Brian inherits the static methods from Person
Brian.isHuman();
或通過上鏈原型鏈
//would be referencing Brian
this.constructor.isHuman();
//would be referencing Person
this.__proto__.constructor.isHuman();
Object.getPrototypeOf(this).constructor.isHuman();
演示
class Person { constructor() {} static isHuman() { return 'yes I am'; } } class Brian extends Person { constructor() { super(); } greeting() { console.log("From super: ", super.constructor.isHuman()) console.log("From class name (Brian): ", Brian.isHuman()) console.log("From class name (Person): ", Person.isHuman()) console.log("From prototype chain: ", this.constructor.isHuman()) console.log("From prototype chain: ", Object.getPrototypeOf(this).constructor.isHuman()) } } const b = new Brian(); b.greeting();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.