1.面试中遇到的一道题,子类继承父类,父类有两个方法,重写其中一个方法。继承我是肯定是用组合方式继承,方法都是在原型上写的,重写的方法直接在子类的原型对象上写就ok了,因为对象的属性查找是按照原型链上就近原则的,先找到的方法就调用这个方法。
2.代码如下:
[javascript] view plain copy // supcalss var parent = function(name,age){ this.name = name; this.age = age; } parent.prototype.showProper = function() { console.log(this.name+":"+this.age); } var child = function(name,age){ parent.call(this,name,age); } // inheritance child.prototype = Object.create(parent.prototype); // child.prototype = new parent(); child.prototype.constructor = child;
// rewrite function child.prototype.showProper = function(){ console.log('I am '+this.name+":"+this.age); } var obj = new child('wozien','22'); obj.showProper();
这样子类就是重写了父类的showProper方法了。其中Object.create(proto)函数是创建一个以proto对象为原型对象的对象,并且返回这个对象。
查找方法的顺序:obj -> child.prototype ->parent.prototype
3.注意的地方:在JS实现方法继承和重写的时候,或者在创建类方法的时候,都是在原型对象prototype上操作的,其他方式继承方法就不用考虑了。
相关文章:
以上是js继承中的方法重写重点讲解的详细内容。更多信息请关注PHP中文网其他相关文章!