1.原型链继承
将父类对象创建出来,赋给子类的原型对象
function SuperType(){
}
function SubType(){
}
SubType.prototype=new SuperType();
原型链继承的问题:
1.所有父类的属性和方法都会被子类的所有对象共享,有时候我们并不想共享父类的某些属性
2.创建子类对象时,不能向父类构造函数中传递参数
2.原型式继承
基于已有的对象创建新对象,Object.create方法规范了原型式继承
function object(o){
function F(){}
F.prototype=o;
return new F();
}
3.寄生组合式继承
即在子类构造函数中调用父类构造函数来继承父类的属性,创建父类原型的一个副本,将其赋给子类原型对象
function SuperType(name){
this.name=name;
}
function SubType(name,age){
//调用父类构造函数继承属性
SuperType.call(this,name);
this.age=age;
}
inherit(SubType,SuperType);
function inherit(subType,superType){
//拷贝父类原型对象,继承公共的方法
var prototype=Object.create(superType);
prototype.constructor=subType;
subType.prototype=prototype;
}
网友评论