晴明的博客园 GitHub      CodePen      CodeWars     

[js] 设计模式 The Module Pattern (模块模式)

#

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="UTF-8">
 6         <title></title>
 7     </head>
 8 
 9     <body>
10         <script>
11             var outer = '外部参数。';
12             var testModule = (function(x) {
13                 //cba:'boom'+x;//error
14                 var variable = '私有变量与' + x;
15                 var myPrivateMethod1 = function(foo) {
16                     console.log('私有方法1');
17                     console.log(foo);
18                 };
19 
20                 function myPrivateMethod2(foo) {
21                     console.log('私有方法2');
22                     console.log(foo);
23                 };
24                 var myPrivateMethod3 = function(foo) {
25                     console.log('私有方法3');
26                     console.log(foo);
27                 };
28 
29                 function myPrivateMethod4(foo) {
30                     console.log('私有方法4');
31                     console.log(foo);
32                 };
33                 console.log('导入混入写法');
34                 return {
35                     inner: '内部属性。',
36                     first: function(n) {
37                         console.log("内部方法first");
38                         variable = '内部函数可导入:' + variable + this.inner + n + x;
39                         return variable;
40                     },
41                     second: function(m) {
42                         console.log("内部方法second");
43                         console.log("现在私有变量的值:" + variable);
44                         console.log(m);
45                         //console.log(inner);//error
46                         this.inner = '改变内部属性。';
47                         variable = '改变私有变量。';
48                         myPrivateMethod1('私有方法1的参数');
49                         myPrivateMethod2('私有方法2的参数');
50                     },
51                     third: myPrivateMethod3
52                         //third: myPrivateMethod4 //一样可行
53                 };
54 //                console.log('导出写法');
55 //                var exports = {};
56 //                exports.inner = '内部属性。';
57 //                exports.first = function(n) {
58 //                    console.log("内部方法first");
59 //                    variable = '内部函数可导入:' + variable + this.inner + n + x;
60 //                    return variable;
61 //                };
62 //                exports.second = function(m) {
63 //                    console.log("内部方法second");
64 //                    console.log("现在私有变量的值:" + variable);
65 //                    console.log(m);
66 //                    this.inner = '改变内部属性。';
67 //                    variable = '改变私有变量。';
68 //                    myPrivateMethod1('私有方法1的参数');
69 //                    myPrivateMethod2('私有方法2的参数');
70 //                };
71 //                exports.third = myPrivateMethod3;
72 //                return exports;
73             })(outer);
74             //var outer = 110;//error,变量的创建要在使用前
75             console.warn(testModule.inner);
76             testModule.first('first内部参数1。');
77             testModule.second('second内部参数1。');
78             console.warn(testModule.inner);
79             var returnv = testModule.first('first内部参数2。');
80             console.warn(returnv);
81             //myPrivateMethod1('外部试试1');//error
82             //myPrivateMethod2('外部试试2');//error
83             testModule.third('third内部参数1。');
84         </script>
85     </body>
86 
87 </html>

 

posted @ 2016-02-21 00:34  晴明桑  阅读(185)  评论(0编辑  收藏  举报