首页 > 代码库 > js面向对象之组合原型模式+构造函数

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面向对象之组合原型模式+构造函数