【发布时间】:2018-07-09 17:13:07
【问题描述】:
我正在构造函数中创建方法,以使用私有值 - 这似乎是创建私有属性并限制对它们的访问的建议模式。
现在我从该类继承,并在派生类的构造函数中创建另一个方法,尝试访问它。不幸的是,我得到了一个例外TypeError: ... is not a function。
怎么办?我可以完全使用构造函数并创建一个新对象,但这与它的类无关,并且复制类和超类的所有属性等似乎很烦人,而且不像正确的方法。再说一遍,该怎么办?
这是一个例子:
class ClassA {
constructor() {
this.getValue = () => "private value";
}
}
class ClassB extends ClassA {
constructor() {
super();
this.getValue = () => `${super.getValue()}, second private value`;
}
}
const a = new ClassA();
const b = new ClassB();
console.log(`a.getValue = ${a.getValue()}`);
console.log(`b.getValue = ${b.getValue()}`);
Fiddle 检查控制台。我期望的结果是“私有价值,第二私有价值”。
如果有人可以给我一个提示,或者不是超级糟糕的解决方法,我将不胜感激。
谢谢,谢谢
【问题讨论】:
标签: javascript methods constructor ecmascript-6 overriding