js重写父类方法无效
有两个类,Father类和Son类
class Father {
constructor() {
}
getInstance=(coordinates, feature, index)=>{
return null;
};
}
class Son extends Father {
constructor() {
super();
}
getInstance() {
console.log("子类方法")
}
}
通过上面的代码,我想要重写父类的getInstance方法,然后我无语的发现子类对象身上的方法还是父类father身上的,返回一个null
然后我一顿思考…
最后解决了问题,我一阵恍惚,我他妈居然因为这个耗了一个多小时
解决方法
将父类中的getInstance方法稍微改一下
getInstance(){
return null
}
造成子类无法重写父类方法的原因是,类的属性和方法是在原型上的,实例化得到的对象可以通过son.proto.getInstance去访问,但是使用箭头函数声明的方法,它是挂在对象上的,所以在使用方法去访问会先访问对象身上的,先找到了父类上利用箭头函数声明的方法,所以子类原型上的重写方法就无法生效了。