js继承5之-----寄生式继承

寄生式继承的思路与寄生式构造函数和工厂模式类似,即创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,

最后再像真的是他做了所有工作一样返回对象。

例如:

function createAnother(original){

 var clone = object(original);//通过调用函数创建一个新对象

 clone.sayHi =  function(){ //以某种方式来增强这个对象

  alert("hi");

};

return clone;//返回这个对象

}

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

var person = {name : "Nicholas",

                         friends : ["shelby","Court","Van"]

}

var anotherPerson = createAnother(person);

anotherPerson.sayHi();//"hi"

这个例子中的代码基于person返回了一个新对象anotherPerson.这个新对象不仅具有person的所有属性和方法,还具有自己的sayHi()方法。

适用范围:在主要考虑对象而不是自定义类型和构造函数的情况下,寄生式继承也是一种有用的模式。前面示范继承模式时使用的object()函数

不是必需的;任何能够返回新对象的函数都适用于次模式。

使用寄生式继承来为对象添加函数,会由于不能做到函数复用而降低效率;这一点与构造函数模式类似。

你可能感兴趣的:(js继承5之-----寄生式继承)