JS-构造函数模式代码实战和总结-极客
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script> 9 //构造函数模式代码实战和总结 10 11 //1 , 用户床垫特定类型的对象 12 //2,JS构造函数比较特殊的地方 new 13 //3, 其他的语言里,比如php里人家实现,有一个关键字创建一个类 14 //4,此时的zaomen是一个构造函数,又充当类的概念 15 function zaomen(huawen){ 16 if (!(this instanceof zaomen)) { 17 return new zaomen(); 18 } 19 //定义私有变量 20 var _huawen = '普通'; 21 //如果传递了参数 huawen 22 if(huawen){ 23 _huawen = huawen; 24 } 25 this.suo='普通的'; 26 this.huawen = _huawen; 27 this.create = function(){ 28 return "【锁头】"+this.suo+"[花纹]"+this.huawen; 29 } 30 }; 31 32 var xiaozhang = zaomen(); 33 var a = xiaozhang.create(); 34 alert('xiaozhang'+a); 35 var xiaoli =new zaomen('绚丽'); 36 alert('xiaoli'+xiaoli.create()); 37 //alert(a);弹出错误。因为此时create的 this.suo.. ....等等的this指向window对象 所以window没有此些属性 得 new一个 所以前面进行一个判段 38 //也可以 var xiaozhang = new zaomen(); 39 40 </script> 41 42 <script> 43 //构造函数和单例模式一一相互对应的。一下修改代码 44 //aa公司 45 var AA = { 46 function:zaomen(huawen){ 47 if (!(this instanceof zaomen)) { 48 return new zaomen(); 49 } 50 //定义私有变量 51 var _huawen = '普通'; 52 //如果传递了参数 huawen 53 if(huawen){ 54 _huawen = huawen; 55 } 56 this.suo='普通的'; 57 this.huawen = _huawen; 58 this.create = function(){ 59 return "【锁头】"+this.suo+"[花纹]"+this.huawen; 60 } 61 }; 62 } 63 64 //BB公司 65 var BB = { 66 function:zaomen(huawen){ 67 if (!(this instanceof zaomen)) { 68 return new zaomen(); 69 } 70 //定义私有变量 71 var _huawen = '普通'; 72 //如果传递了参数 huawen 73 if(huawen){ 74 _huawen = huawen; 75 } 76 this.suo='普通的'; 77 this.huawen = _huawen; 78 this.create = function(){ 79 return "【锁头】"+this.suo+"[花纹]"+this.huawen; 80 } 81 }; 82 } 83 84 var xiaozhang = new AA.zaomen(); 85 alert('xiaozhang'+xiaozhang.create()); 86 87 var xiaoli = new BB.zaomen('绚丽'); 88 alert('xiaoli'+xiaoli.create()); 89 </script> 90 </body> 91 </html>