2010-12-17 116 views
1

以下javascript代碼是什麼意思?我想它是在函數內定義一個函數來使它看起來像OOP?爲什麼函數可以返回多個函數?最後的支架是什麼?基本javascript語法問題

var grid_ui = function() { 

    function setup_data_source() {} 

    return { 
     init: function() {}, 

     set_ds: function(rpt_headers, rpt_rows) {} 
    } // return 
}(); 

回答

4

{ }表示法被稱爲對象字面量。它是一樣的:

a = new Object(); 
a.init = function() { }; 
a.set_ds = function(...) { }; 
return a; 

return { }返回一個對象。

function() { ... }();是一個自我調用函數:它創建一個匿名函數,他們會立即調用它。

在你的代碼中,自調用函數返回一個函數對象,這是一個名稱空間模式。 grid_ui的值現在包含{ init: ..., set_ds: ... },在return中提到。

這些概念是很難在一個解釋SO回答,所以我會爲您提供一些鏈接:

2

它定義了一個函數,然後調用它並獲取返回值並將其指定給grid_ui

grid_ui的值現在是包含密鑰initset_ds的對象(也稱爲字典)。

在JavaScript中,您可以在函數中定義函數並將函數分配給變量。

現在您可以撥打電話grid_ui.init()grid_ui.set_ds("test", 1)

0

這是OOP。函數是JavaScript中的對象。

此代碼表示存在一個變量grid_ui,該變量的計算結果爲具有兩個「公共」函數init和set_ds的對象。 init和set_ds也有一個包含「private」函數setup_data_source的上下文。

沒有括號。