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 // 1 ,独立的对象 比如 一个是xiaowang 和一个xiaoli
10 // 2,小李跟小王通过门铃进行通信
11 // 3,先看小王家有没有门,如果有 直接通过门铃通讯 didi 没有的话 建门
12 // 4,单例之间进行通信
13 // \
14 //
15 // 以下这种单例是需要用到的时候 才去New一个对象 平时开发里 不是这样写
16 var xiaowang = (function(argument){
17 var xiaowangjia = function(message){
18 //建门
19 this.menling = message;
20 }
21 var men;
22 var info = {
23 //info是包含对外的东西
24 sendMessage:function(message){
25 //这是info里面其中一个方法,接受信息
26 if (!men) {
27 men = new xiaowangjia(message);
28 };
29 return men;
30 }
31 };
32 return info;
33 })();
34 var xiaoli = {
35 callXiaowang:function(mes){
36 //小王家有一个送消息的方法
37 var _xw=xiaowang.sendMessage(mes);
38 alert(_xw.menling);
39 //xiaowang采用闭包 ;此时xiaowang.sendMessage(message)已经被回收了 相当于_xw = null
40 _xw = null;//加不加这句话都没事,因为效果都一样,不加也是自动被垃圾回收机制回收掉
41 }
42 }
43 xiaoli.callXiaowang('didi');
44
45 </script>
46
47 <script>
48 //页面有6个按钮 a b c d e f
49 // a b c => top
50 // d e f =>bannerbta
51 var top = {
52 init:function(){
53 //
54 this.render();
55 this.bind();
56 },
57 //要传递的a
58 a:4,
59 render:function(){
60 //放所有dom元素
61 var me = this;
62 me.btna = $('#a');
63 },
64 bind:function(){
65 //绑定事件
66 var me = this;
67 me.btna.click(function(){
68 //业务逻辑取出去
69 me.test(); //此时不能this.test(); 因为此时的this指的是 按钮
70 })
71 },
72 test:function(){
73 a= 5;
74 }
75 }
76 var banner = {
77 init:function(){
78 //初始化
79 this.render();
80 this.bind();
81 },
82 a:4,
83 render:function(){
84 //放所有dom元素 既是绑定dom元素
85 var me = this;
86 me.btna = $('#d');
87 },
88 bind:function(){
89 //绑定事件
90 var me = this;
91 me.btna.click(function(){
92 //业务逻辑取出去
93 me.test(); //此时不能this.test(); 因为此时的this指的是 按钮
94 })
95 },
96 test:function(){
97
98 //当点击的时候
99 top.a = 6;
100 }
101 }
102 top.init();
103 banner.init();
104
105
106 </script>
107
108 </body>
109 </html>