不能在javascript中使用"super.member.Func()"。如何正确重写?



JS中的super在这篇文章中,我读到了什么不能使用super作为它:

class Base {
baseField = 10;
}
class Extended extends Base {
extendedField = super.baseField; // undefined
}
我的代码是:

class Parent{
ext_class;
constructor(ext){
this.ext_class=ext;
}
}
class Child extends Parent{
constructor(ext){
super(ext);
}
Method(p){
super.ext_class.ExecFunc(p);
}

}

我不能从父类成员中的对象调用函数。我可以保存在孩子,但不确定什么是正确的。

怎么写正确?

class Base {
constructor(bf){
this.baseField = bf
}
}
Base.prototype.baseField = 1;
class Extended extends Base {
constructor(bf){
super(bf)
}
extendedField = super.baseField;
}
console.log(new Extended(12).extendedField);

这个也不能正常工作。

可是这个工作我多么需要啊!!

class Base {
constructor(bf){
Base.prototype.baseField = bf
}
}
class Extended extends Base {
constructor(bf){
super(bf)
}
extendedField = super.baseField;
}
console.log(new Extended(13).extendedField);

我觉得你应该再往下滚动一点:

请注意,实例字段是在实例而不是构造函数的原型上设置的,所以你不能使用super来访问超类的实例字段。

这意味着你必须像这样明确地把属性放在原型上:

class Base {}
Base.prototype.baseField = 10;
class Extended extends Base {
extendedField = super.baseField;
}
console.log(new Extended().extendedField);

最新更新