2016-08-24 70 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函數中調用函數?

UPDATE: 希望close選民明白這個問題的重要性。

+1

1 - JavaScript中,2 - 通過調用初始化 –

+0

難道這僅調用一次性?如果我想分別調用函數c,我該怎麼做? init返回什麼? –

+0

'init返回什麼?' - 你沒有顯示它返回的結果 –

回答

2

你指的是被稱爲模塊模式的結構。

看到module patterns in depth

+0

本博客詳細解釋了概念(IIFE)。 –

2

變量somevar包含直接執行的匿名函數的響應object,稱爲IIFE。該對象有一個屬性,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

相關問題