这是代码重用的一个著名的原则,提出:优先考虑对象的组合,而不是类继承。在Javascript,没有阶级概念,所以代码重用是不受限制的类继承。有许多方法和构造函数来创建对象,在Javascript中,使用新的创造对象和修改对象的动态性,有许多方法来利用Javascript的非类的继承,这是所谓的现代传承模式。例如,我们需要将其他对象组合成需要与技术、借用和多路复用方法混合的对象。

类继承模式-默认模式

两个构造函数父和子的示例:

复制代码代码如下所示:

函数父(名称){

this.name =名字| | 亚当;

}

parent.prototype.say = { {

返回this.name;

};

函数子(名称){

}

继承(子、父);



下面是可重用继承函数继承()的实现之一:

复制代码代码如下所示:

函数继承(c,p){

c.prototype =新的P();

}



原型属性应该指向一个对象而不是一个函数,因此他必须指向父构造函数创建的实例而不是构造函数本身。

在此之后,当创建子对象时,该函数将通过原型从父实例获得:

复制代码代码如下所示:

新孩子();

(孩子。说);亚当



继承后调用原型链:

进一步添加孩子的属性:

复制代码代码如下所示:

新孩子();

kid.name = 帕特里克;

(孩子。说);帕特里克



原型链的变化:

您可以在对象属性中找到名称,并且不必再次查找原型链。

使用上述模型的缺点之一是它同时继承了两个对象的属性,也就是说,属性添加到了这个属性和原型属性中。

另一个缺点是,继承遗产()不支持参数传递给subconstructor,如:

复制代码代码如下所示:

var =新子(塞思);

(说); / /亚当



这个结果是不期望的,虽然子构造函数可以将参数传递给父构造函数,但是每次我们需要一个子对象时,我们必须重新执行这个继承机制,而且效率很低,因为它最终会重新创建父对象。

本文首先介绍了这一点,并将继续更新Javascript代码重用模式的剩余模式。