【发布时间】:2018-07-30 07:54:47
【问题描述】:
我发现了很多关于类继承的帖子,但没有关于更改静态类属性的具体问题。
问题是:我正在尝试在一个静态类上实现 JavaScript 上的类继承,该静态类将具有一些通用静态方法,并且将由子类扩展,静态也是如此。子类可能会添加更多静态方法并会更改配置对象。它们都不会被实例化,所以我假设我无法在构造函数上创建 body 属性,因为它不会被调用。我可以使用以下代码,但我认为这可能不是正确的方法。
你能推荐一个更好的选择吗?
class Animal{
static get body(){
return {
legs: null,
head: 1,
}
}
static getLegs(){
return this.body.legs;
}
static getHead(){
return this.body.head;
}
}
class Ant extends Animal{
static get body(){
return {
legs: 6,
head: 1,
}
}
}
class Monster extends Animal{
static get body(){
return {
legs: 4,
head: 2,
}
}
}
console.log(Animal.getLegs(), Animal.getHead());
console.log(Ant.getLegs(), Ant.getHead());
console.log(Monster.getLegs(), Monster.getHead());
【问题讨论】:
-
代码正在运行,您的子类函数成功地隐藏了父类函数。我不确定您可能希望在这里改进什么?
-
@CertainPerformance 每次尝试获取正文时都会返回一个新对象,看起来性能不佳。我想知道是否有办法在构造之外使用变量或属性。
标签: javascript inheritance static