var classA = function(name){
this.name = name;
}
classA.prototype.alertName = function(){
alert(this.name);
}
var classB = function(name,age){
classA.call(this,name);
this.age = age;
}
classB.prototype = new classA();
classB.prototype.alertAge = function(){
alert(this.age);
}
使用对象冒充实现了向父类传递参数,同时使用原型继承实现了对公有方法的继承。
说完了这三中继承方式了,下面该说到问题的时候了。
你可能会不解,为什么有了对象冒充,有了原型继承还要再弄出个什么混合继承,对,最重要的也就是这个问题。
1.如果你实际测试一下,你会发现通过对象冒充的方式实现的继承,子类是无法访问到父类的原型链上的方法的。
2.而用原型继承,则会把所有的属性变成共享的属性,如果你同一个子类实现两个实例,你会发现你的所有实例共享所有的属性。
3.但是这肯定是不合适的了。所以就有了混合继承的方式,让属性继续保持私有,同时让子类能够访问父类的原型链的方法。
你可以亲自动手试一下,在对象冒充继承的时候,子类无法访问父类的原型链方法,原型链继承子类的所有实例共享所有父类属性。这里我就不写例子了。
您可能感兴趣的文章: