美文网首页javascript设计模式笔记
JavaScript进阶:原型式继承和寄生式继承

JavaScript进阶:原型式继承和寄生式继承

作者: 听书先生 | 来源:发表于2022-01-17 15:13 被阅读0次
1、原型式继承

原型式继承是对类式继承的一部分封装调整,类式继承在父类的外部,单独创建了一个子类,然后再通过将父类对象给到子类的原型上去实现的,而原型式继承是直接在父类内部创建一个过渡对象,将父类的对象给到过渡对象上的原型上去,在返回一个过渡对象实例出去。

  • 优点:
    相较于类式继承,减少了内存的开销(过渡对象中无其他内容),因为原型式继承的目的就是为了直接创建并返回一个新的实例化对象。
// 原型继承
inHeritObject(o) {
    // 创建一个过渡对象
    function F() {}
    // 将父类对象的给过渡对象的原型对象上
    F.prototype = o;
    // 返回新的实例化对象
    return new F();
}
  • 缺点:
    未解决类式继承带来的相同的问题点,引用类型的数据,一个子实例修改后,会导致所有的子实例的该数据都被修改。
// 创建一个对象作为父类
let Book = {
    name: 'javascript设计模式',
    list: ['1','2','3','4','5']
}
let b1 = this.inHeritObject(Book);
let b2 = this.inHeritObject(Book);
console.log(b2.list); // 在b1修改前打印list数组
b1.name = 'RXJS函数式编程';
b1.list.push('6');
console.log(b2.list);  // 在b1修改后打印list数组
2、寄生式继承

寄生式继承就是对继承对象的进一步封装拓展。

// 原型继承
inHeritObject(o) {
    // 创建一个过渡对象
    function F() {}
    // 将父类对象的给过渡对象的原型对象上
    F.prototype = o;
    // 返回新的实例化对象
    return new F();
},
// 寄生式继承
parasiticObject(o) {
    const obj = this.inHeritObject(o);
    obj.getName = function() {
        console.log(this.name);
    }
    return obj;
}

使用寄生式调用拓展的对象属性和方法:

let b1 = this.parasiticObject(Book);
let b2 = this.parasiticObject(Book);
b1.getName();

相关文章

  • javaScript 实现继承方式

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

  • Javascript 继承

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

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

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

  • js继承方式

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

  • JavaScript进阶:原型式继承和寄生式继承

    1、原型式继承 原型式继承是对类式继承的一部分封装调整,类式继承在父类的外部,单独创建了一个子类,然后再通过将父类...

  • 二、js继承的几种方式及优缺点

    1、继承:原型链、借用构造函数、组合继承、原型式继承、寄生式继承、寄生组合继承

  • JavaScript 继承(五)寄生式、组合寄生继承

    寄生式(parasitic)继承是与原型式继承紧密相关的一种思路。寄生式继承的思路与寄生构造函数和工厂模式类似,即...

  • js的继承

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

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

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

  • 继承

    原型继承 借用构造函数 组合继承 原型式继承 寄生式继承 寄生组合继承 优点: 因为组合继承最大的问题是无论什么...

网友评论

    本文标题:JavaScript进阶:原型式继承和寄生式继承

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