寄生式继承

与原型式继承比较接近的一种继承方式是 寄生式继承。寄生式继承背后的思路类似于继承构造函数和工厂模式:创建一个实现继承的函数,以某种方式增强对象,然后返回这个对象。

1.基本的寄生继承模式如下:

function createAnother(original){
    let clone=object(original); // 通过调用函数创建一个新对象
    clone.sayHi=function(){ // 以某种方式增强这个对象
        console.log("hi");
    };
    return clone; // 返回这个对象
}
在这段代码中,createAnother()函数结果一个参数,就是新对象的基准对象。这个对象original会被传给 object()函数,然后将返回的新对象赋值给 clone。接着给 clone对象添加一个新方法 sayHi()。最后返回这个对象。

2.可以像下面这样使用 createAnother()函数:

let person={
    name:"Nicholas",
    friends:["Shelby","Court","Van"]
};

let anotherPerson=createAnother(person);
abotherPerson.sayHi(); // "hi"
这个例子基于person对象返回一个新对象。新返回的 anotherPerson 对象具有 person 的所有属性和方法,还有一个新方法叫 sayHi()。

3.寄生式继承同样适合主要关注对象,而不在乎类型和构造函数的场景。object()函数不是寄生式继承所必需的,任何返回新对象的函数都可以在这里使用。

**注意**:通过寄生式继承给对象添加函数会导致函数难以重用,与构造函数模式类似。

4.本期的分享到了这里就结束啦,希望对你有所帮助,让我们一起努力走向巅峰。

你可能感兴趣的:(javascript,javascript继承)