2016-08-24 16 views
0

私は以下の構造でjavascriptコードを見つけました。次のjavascriptコード構造は何を意味しますか?

var somevar = function(){ 
    return { 
     init: function(){ 
      function a(){} // no terminator in between functions. 
      function b(){} 
      function c(){} and so on 
      ... 
      some jquery declarations 
      ... 
     } // init ends 
    }; // return ends 
}(); // somevar ends 

質問は、この概念は、何を
1と呼ばれているんされていますか?
2. init関数内の関数をどのように呼び出すのですか?

更新: 希望この質問の重要性を理解しています。

+1

1を参照 - javascriptの、2 - INIT –

+0

を呼び出すことによっては、ワンタイムのみこの呼び出しですか?関数Cを別に呼びたいのですが、どうすればいいでしょうか? initは何を返しますか? –

+0

'initは何を返しますか? ' - 返された内容は表示されていません –

答えて

2

あなたが参照している構造は、モジュールパターンとして知られています。

module patterns in depth

+0

このブログは概念(IIFE)を詳細に説明しています。 –

2

変数somevarには、IIFEという直接実行される無名関数の応答objectが含まれています。オブジェクトには1つのプロパティinitがあり、何にも匿名関数が含まれています。

init関数内の関数は、匿名関数(スコープ)の内部でのみ使用できます。

var somevar = function() { 
 
    return { 
 
     init: function() { 
 
      // 'a()' is only available inside of the 'init' function 
 
      function a() { 
 
       console.log("init"); 
 
      } 
 
      
 
      a(); 
 
     } 
 
    }; 
 
}(); // <-- here the outer function is executed directly 
 

 
// the call of 'init' 
 
somevar.init();

+0

関数Cを別に呼びたいのですが、どうすればいいでしょうか? –

+0

あなたはそれをすることはできません –

+0

'init'によって何とか返されなければ、単に' c() 'にアクセスすることはできません。 @KishorPawar – eisbehr