js面向对象之组合原型模式+构造函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js面向对象之组合原型模式+构造函数相关的知识,希望对你有一定的参考价值。

   我们都知道原型模式构建对象的最大优点就是共享,但是你知道吗,原型模式最大的缺点就是它最大的优点,如果共享的是方法的话使我们期望的一般也不会有什么影响,但是如果牵扯到其他的引用类型的话就会出现麻烦,看如下;

 //原型的缺点
           function Box() {}
           
           Box.prototype={
               constructor:Box,
               name:‘Lee‘,
               age:   20,
               family:[‘哥哥‘,‘姐姐‘,‘妹妹‘]
           }
           
           var box1 = new Box();
           var box2 = new Box();
           alert(box1.family);//哥哥、姐姐、妹妹
           box1.family.push(‘弟弟‘);   在第一个实例修改后的引用类型,保持了共享
           alert(box1.family);//哥哥、姐姐、妹妹、弟弟
           
           alert(box2.family)//哥哥、姐姐、妹妹、弟弟 //共享了box1添加后的引用类型
           

为解决这个为,我们可以使用组合原型模式+构造函数

 

以上是关于js面向对象之组合原型模式+构造函数的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之面向对象学习七(动态原型模式和寄生构造函数模式创建自定义类型)

js面向对象程序设计之构造函数

JS面向对象三大特征:封装、继承、多态

JS面向对象——组合使用构造函数模型与原型模型

js之面向对象

JS高级程序设计2