【发布时间】:2019-07-28 21:26:09
【问题描述】:
我需要从子类中更改父类的静态方法。
来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/static 我读到:
静态方法调用直接在类上进行,而不是 可在类的实例上调用。
在下面的示例中,我有一个带有 foo() 方法的 Parent 类,它调用了 bar() 方法(都是静态的)。我需要将 bar 从 Child 子类更改为调用 Child.foo() 将调用修改后的 bar 方法,而不是原来的方法。
有没有可能(可能是孩子的constructor)?
class Parent {
static foo() {
Parent.bar();
}
static bar() {
console.log("HERE I AM");
}
}
class Child extends Parent {
static bar() {
super.bar(); // maybe not what I want?
console.log(", FELLAS!");
}
}
Parent.foo(); // HERE I AM
Child.foo(); // HERE I AM, FELLAS! (need this!)
【问题讨论】:
-
好吧,这就是问题所在,我需要打电话给
Child.foo(),然后苦苦思考如何让它发挥作用……将在问题中添加此信息。 -
为什么有
foo()?调用bar()反而会给你你想要的行为。Parent.bar()输出“我在这儿”,Child.bar() 输出“我在这儿\n,伙计们!”。 -
@Tibrogargan 我正在尝试实现在the code of another person 中实现并从另一个(多个)方法调用的方法(
RenderLayer_())。 -
@Paulpro 我试图在我之前的评论中解释原因。我只是想知道这是否可行。我尝试这个的原因并不是那么简单,但主要是因为我想要一种简单的方法来扩展一个必须由同一类的另一个方法调用的类的静态方法。
-
不要投反对票...我认为问题很清楚。如果这不可行,我更喜欢有人告诉我,而不是没有任何理由的默默否决。
标签: javascript inheritance ecmascript-6 es6-class