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>