Javascriptモジュールモード学習共有

12997 ワード

モジュールモードに触れると聞いたことがありますが、今回は整理してみました.
モジュールモードの基本的な点は、匿名関数のクローズドであり、これにより実現される.
 1 //    
 2 
 3 var MODULE = (function(){
 4      /*       this 、     my   、return my;        my  、     MODULE,    my        ,               */
 5     var my = {},
 6         _age;
 7 
 8     /*
 9 
10     //     、C++         
11     my.setAge = function(age){
12         age = age;
13     } 
14 
15     */
16 
17     my.setAge = function(tmp){
18         age = tmp;
19     };
20 
21     my.getAge = function(){
22         console.log(age);
23     };
24 
25     return my;
26 }());
27 
28 
29 MODULE.setAge(2);
30 MODULE.getAge();
これは前に書いたものですので、決定がちょっとばかばかしいです.
 1 //          
 2 //              、           、        、      、
 3 //        、  new             、             
 4 //         、                、                    、
 5 
 6 var MODULE1 = (function(){
 7     var age;
 8 
 9     return function(){
10         this.getAge = function(){
11             console.log(age);
12         }
13         this.setAge = function(tmp){
14             age = tmp;
15         }
16     }
17 }());
18 
19 /*
20      
21 MODULE1().setAge(2);
22 MODULE1().getAge();
23 */
24 var a = new MODULE1();
25 a.setAge(3);
26 a.getAge();
1 //
2 var b = (function($){
3     // do something                
4 }(jQuery));
 
モジュールモードの拡張
 1 //     
 2 //        B     
 3 MODULE.weight = 1;
 4 MODULE.setWeight = function(tmp){
 5     weight = tmp;
 6 };
 7 
 8 MODULE.getWeight = function(){
 9     console.log(weight);
10 };
11 
12 MODULE.setWeight(100);
13 MODULE.getWeight();
14 
15 
16 //        、     、        、               、      、      
17 
18 var MODULE = (function(my){
19     //              
20     my.gf = "You";
21     //var gf = "You";
22     my.getGf = function(){
23         //     console.log(gf)  Nodejs             、gf                    、 my.gf   my    、gf     
24         //     var gf = “You”      console.log(gf);      、
25         //   var gf   gf              my.gf          、        、   
26         //        var gf'          、  setGf      
27         console.log(my.gf);
28     };
29     my.setGf = function(tmp){
30         gf = tmp;
31     };
32 
33     // and so on
34     return my;
35 }(MODULE) || {});
36 
37 
38 MODULE.getGf();
//あの牛文の中の緊密な拡張は継承中のc.klass=p.prototypeに似ています.
 
親オブジェクトへの参照を保持します.この中で元のモジュールへの参照を維持します.
コピーと継承は、第一の方式を採用したモジュールが痛いです.ハスPropertyの拡張を利用して引用に基づいていますので、もう一方を変えても変わります.
私のあのようなこすりつけのfunction newの方式を採用して、継承を利用してこのような影響をもたらさないで、これは長所です.
var MODULE = (function (my) {
    var old_moduleMethod = my.moduleMethod;
 
    my.moduleMethod = function () {
        // method override, has access to old through old_moduleMethod...
      // 、 old_moduleMethod ? my.moduleMethod 、 old_moduleMethod ...
}; return my; }(MODULE));
 
原文の作者のその書類にまたがる私有状態は本当に立派で、勉強しました.
同前sealユニセックスのロックな思想、かっこいいです.
1 //
2 MODULE.xxx = (function(){
3     var you = {};
4 
5     //    
6     return you;
7 }());
 
 
こすり合わせて一度きりました.間違いがあったら指摘してください.勉強中です.
付原文著者牛強制リンクhttp://blog.jobbole.com/40409/