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);