标签:
模式
1 //构造函数+原型模型 2 function Box(name,age){ //保持独立的用构造函数 3 this.name=name; 4 this.age=age; 5 this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘]; 6 7 } 8 9 Box.prototype={ //保持共享的用原型模型 10 constructor:Box, 11 run:function(){ 12 return this.name + this.age + this.family; 13 } 14 } 15 16 var box1 = new Box(‘Lee‘,100); 17 // alert(box1.run()); 18 box1.family.push(‘妹妹‘); 19 alert(box1.family); 20 21 var box2 = new Box(‘Jack‘,200); 22 // alert(box2.run()); 23 alert(box2.family); //引用类型没有使用原型,所以没有共享
动态原型
1 //动态原型模型,可以将原型封装到原型,每次运行都要初始化一次 2 function Box(name,age){ 3 this.name=name; 4 this.age=age; 5 this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘]; 6 7 // alert("原型初始化开始"); 8 // Box.prototype.run = function(){ 9 // return this.name + this.age + this.family; 10 // } 11 // alert("原型初始化结束"); 12 13 if(typeof this.run != ‘function‘){ //判断run是否存在,即是否已初始化 14 alert("原型初始化开始"); 15 Box.prototype.run = function(){ 16 return this.name + this.age + this.family; 17 } 18 alert("原型初始化结束"); 19 } 20 } 21 22 var box1 = new Box(‘Lee‘,100); 23 alert(box1.run()); 24 25 var box2 = new Box(‘Jack‘,200); 26 alert(box2.run());
工厂模型
1 工厂模式 2 function Object(name,age){ 3 var obj = new Object(); 4 obj.name = name; 5 obj.age = age; 6 obj.run = function(){ 7 8 9 } 10 return obj; 11 }
寄生构造函数模型
1 //寄生构造函数模式 2 function Box(name,age){ 3 var obj = new Object(); 4 obj.name = name; 5 obj.age = age; 6 obj.run = function(){ 7 return name + age; 8 } 9 return obj; 10 }
稳妥构造函数模型
1 //稳妥构造函数,函数体不能用this,实例化不能用new 2 function Box(name,age){ 3 var obj = new Object(); 4 obj.name = name; 5 obj.age = age; 6 obj.run = function(){ 7 return name + age; 8 } 9 return obj; 10 } 11 var box1 = Box(‘Lee‘,100); 12 alert(box1.run());
标签:
原文地址:http://www.cnblogs.com/wangwanchao/p/5426577.html