js实现继承方式总结

2017-08-25  本文已影响14人  星月西

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;
}
上一篇下一篇

猜你喜欢

热点阅读