美文网首页
Javascript完美继承方式 - 寄生组合

Javascript完美继承方式 - 寄生组合

作者: liuuuuuu | 来源:发表于2018-02-26 14:04 被阅读0次

定义一个动物类

// 定义一个动物类
function Animal (name) {
// 属性
this.name = name || 'Animal';
// 实例方法
this.sleep = function(){
console.log(this.name + '正在睡觉!');
}
}
// 原型方法
Animal.prototype.eat = function(food) {
console.log(this.name + '正在吃:' + food);
};

寄生组合继承

核心:通过寄生方式,去掉父类的实例属性,在调用两次父类的构造的时候,就不会初始化两次实例方法或属性,避免的组合继承的缺点,或者说是小bug。

function Cat(name){
  Animal.call(this);
  this.name = name || 'Tom';
}
/*
 * 立即执行函数
 * void function(){}() = (function(){})();
 * 在很早的javascript版本里面就有void的用法了,这里就不再过于赘述。
 * */
void function(){
  // 创建一个没有实例方法的类
  var Super = function(){};
  Super.prototype = Animal.prototype;
  //将实例作为子类的原型
  Cat.prototype = new Super();
  // 修复constructor
  Cat.prototype.constructor = Cat;
}();
var cat = new Cat();
var log = console.log;
log (cat.name);
log (cat.sleep());
log (cat instanceof Animal);
log (cat instanceof Cat);

优点: 在js继承的六种方法[原型链,组合,拷贝,实例,构造,寄生组合]中算得上完美的继承方式。
缺点: 实现起来稍微有点复杂。

说明

原创作品,禁止转载和伪原创,违者必究!

相关文章

  • javaScript 实现继承方式

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

  • Javascript完美继承方式 - 寄生组合

    定义一个动物类 寄生组合继承 核心:通过寄生方式,去掉父类的实例属性,在调用两次父类的构造的时候,就不会初始化两次...

  • JavaScript继承方式最佳实践—寄生组合继承的详细推理

    前言 也许学过JavaScript继承方式的朋友都知道,自定义引用类型的最佳继承方式非寄生组合继承方式莫属;然而,...

  • Javascript 继承

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

  • js继承

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

  • js的继承

    面向对象的继承方式有很多种,原型链继承、借用构造函数继承、组合继承、原型式继承、寄生式继承、寄生式组合继承、深拷贝...

  • (九)

    寄生组合式继承前面说过,组合继承是JavaScript最常用的继承模式;不过,它也有自己的不足。组合继承最大的问题...

  • JavaScript中继承的实现方式---笔记

    继承的几种实现方式:原型链、借用构造函数、组合继承、原型式继承、寄生式继承、寄生组合式继承;继承的实现,一般有接口...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • JS中继承的方式

    讨论三种常用的继承方式: 组合继承 原型新对象继承 3 . 寄生继承

网友评论

      本文标题:Javascript完美继承方式 - 寄生组合

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