javascript设计模式笔记

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

2022-01-17  本文已影响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();
上一篇 下一篇

猜你喜欢

热点阅读