寄生式(parasitic)继承

寄生式(parasitic)继承是与原型式继承紧密相关的一种思路.
* 思路与寄生构造函数个工厂模式类似,即创建一个仅用于封装继承过程的函数,
* 该函数在内部以某种方式来增强对象,
* 最后再像真的是它做了所有工作一样返回对象.

    function createAnother(original) {
        var clone = Object(original);//通过调用函数创建一个新对象
        clone.sayHi = function () {//以某种方式来增强这个对象
            console.log('Hi '+this.name);
        };
        return clone;//返回这个对象
    }

    //使用这个函数
    var person = {
        name : 'Hongbin',
        friends : ['A','B','c']
    };

    var anotherPerson = createAnother(person);
    anotherPerson.sayHi();

    var person2 = {
        name:'666',
        age: 20
    };
    
    var anotherPerson2 = createAnother(person2);
    anotherPerson2.sayHi();
    console.log(anotherPerson2);
    console.log(anotherPerson);

这个方法实现:
* 定义一个clone,clone最开始是一个空的对象,通过传入一个存在的对象,来当做自己的,寄生之意源自于此,寄生在已有的对象上.
*然后给他个方法.用以增强它,最后返回这个clone,clone就有了自己的方法,和属性,变相的继承.
*
* 适用条件:
* 在主要考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式.
* var clone = Object(original); 这里的Object不是必须的,任何能够返回新对象额函数都适用.

发布了68 篇原创文章 · 获赞 89 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/printf_hello/article/details/104281731
今日推荐