美文网首页
JS寄生组合式继承

JS寄生组合式继承

作者: 开始懂了_317 | 来源:发表于2017-04-21 19:11 被阅读0次

JS的继承方式有很多种,最理想的继承方式是寄生组合式继承。
组合继承(构造函数和原型的组合)会调用两次父类构造函数的代码,

function Person(name){
  this.name=name;
}
Person.prototype.sayName=function(){
  console.log(this.name+' '+this.gender+' '+this.age);
}
function Female(name,gender,age){
  Person.call(this,name);//第一次调用父类构造函数             
  this.age=age;
  this.gender=gender;
}
Female.prototype=new Person();//第一次调用父类构造函数
Female.prototype.constrcutor=Female;//因重写原型而失去constructor属性,所以要对constrcutor重新赋值

因此引入寄生组合式继承,即通过借用构造函数来继承属性,通过原型链的方式来继承方法,而不需要为子类指定原型而调用父类的构造函数,我们需要拿到的仅仅是父类原型的一个副本。因此可以通过传入子类和父类的构造函数作为参数,首先创建父类原型的一个复本,并为其添加constrcutor,最后赋给子类的原型。这样避免了调用两次父类的构造函数,为其创建多余的属性。

function inheritPrototype(Female,Person){ 
  var protoType=Object.create(Person.prototype);
  protoType.constructor=Female;
  Female.prototype=protoType;
}
//取代
//Female.prototype=new Person();
//Female.prototype.constrcutor=Female
inheritPrototype(Female,Person);
Female.prototype.sayAge=function(){
console.log(this.name+' '+this.age);
}
 var fm=new Female('skila','female',19);
 fm.sayName();//skila female 19
 fm.sayAge();skila  19

相关文章

  • js继承

    js各种继承方式介绍 1.原型链继承 2.构造继承 3.组合继承 4.寄生继承 5.寄生组合式继承 这种方式的高效...

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • js常见的继承方式

    js常见的继承方式 1. 原型链继承 2. 构造函数继承 3. 组合式继承 4. 原型式继承 5. 寄生式继承 6...

  • 前端面试题总结【38】:javascript继承的 6 种方法

    原型链继承 借用构造函数继承 组合继承(原型+借用构造) 原型式继承 寄生式继承 寄生组合式继承 推荐: 持续更新...

  • javaScript 实现继承方式

    JavaScript实现继承共6种方式:原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承。

  • Javascript 继承

    参考:JavaScript高级程序设计(第3版) 原型链 原型式继承 寄生式继承 寄生组合式继承

  • JS类的继承

    1.类式继承 构造函数继承 3.组合继承 4.原型继承 5.寄生式继承 6.寄生组合式继承

  • 18-深入拓展原型链模式(六种常用继承方式)

    1. 原型继承 2. call继承 3. 冒充对象继承 4.组合式继承 5. 寄生组合式继承 6. 中间类继承

  • JS寄生组合式继承

    解析一下寄生组合式继承使用的原因。因为其他的继承方式要么就是函数无法复用(就是每创建一个新的实例,创建其中的方法的...

  • JS寄生组合式继承

    JS的继承方式有很多种,最理想的继承方式是寄生组合式继承。组合继承(构造函数和原型的组合)会调用两次父类构造函数的...

网友评论

      本文标题:JS寄生组合式继承

      本文链接:https://www.haomeiwen.com/subject/zjfjzttx.html