js继承中的方法重写

1.面试中遇到的一道题,子类继承父类,父类有两个方法,重写其中一个方法。继承我是肯定是用组合方式继承,方法都是在原型上写的,重写的方法直接在子类的原型对象上写就ok了,因为对象的属性查找是按照原型链上就近原则的,先找到的方法就调用这个方法。


2.代码如下:

// 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/Node)