一、对象字面值

例如:var myModel = {

                      consle.log(this.myConfig.language);
} } }
1、myModel.myMethod();
输出:this is myMethod 
2、myModel.myMethod1();
输出:Cache is:enabled
3、myModel.myMethod2({ language: "zh", useCache : false });
 输出: zh

  

二、使用自包含的模块实现了模块模式

这种模式的特点:

  • 可以创建只能被我们模块访问的私有函数。这些函数没有暴露出来(只有一些API是暴露出来的),它们被认为是完全私有的。
  • 当我们在一个调试器中,需要发现哪个函数抛出异常的时候,可以很容易的看到调用栈,因为这些函数是正常声明的并且是命名的函数。
  • 这种模式同样可以让我们在不同的情况下返回不同的函数。

例如:

 1 var basketModel = ( function(){
 2     var basket = [];
 3     function dosomethingPrivate()
 4     {
 5     }
 6     function dosomethingElsePrivate()
 7     {
 8     }
 9     // Return an object exposed to the public
10     return{
11         // Add items to our basket
12         addItem : funtion(values){
13             basket.push(values);
14         },
15         // Get the count of items in the basket
16         getItemCount : function(){
17             return basket.length;
18         },
19         dosomething : dosomethingPrivate,
20         getTotal : function(){
21             var q = this.getItemCount();
22             p = 0;
23             while(q--){
24                 p += this.basket[q].price;
25             }
26             return p;
27         }
28     };
29 }());
30 
31     使用方法:
32     basketModule.addItem({  item: "bread",  price: 0.5});
33     basketModule.addItem({  item: "butter",  price: 0.3});
34     //Outputs: 2
35     console.log( basketModule.getItemCount() );
36     //Outputs: 0.8
37     console.log( basketModule.getTotal() );
38     //undefined
39     console.log( basketModule.basket ); 
40     //undefined
41     console.log( basket );

三、Import mixins(导入混合)

这个变体展示了如何将全局(例如 jQuery)作为一个参数传入模块的匿名函数。
这种方式允许我们导入全局,并且按照我们的想法在本地为这些全局起一个别名。

 1 var myModel = (function(JQ,_){
 2     function privateMethod1(){
 3         jQ(".container").html("test");
 4     }
 5     function privateMethod2(){
 6         console.log( _.min([10, 5, 100, 2, 1000]) );
 7     }
 8     return {
 9         publicMethod : function(){
10             privateMethod1();
11         }
12     }
13 
14 }(JQ,_));
View Code

相关文章: