2012-02-23 176 views
0

我試圖做類似全局命名空間變量?

(function(skillet, $, undefined) { 

skillet.global = { 

    names: { 

     first: 'abe', 
     last: 'watson' 

    }, 
    addresses: { 
     home: 'blah' 
    } 

} 

}(window.skillet = window.skillet || {}, jQuery)); 

所以,我可以訪問諸如

skillet.global.names.first(); 
skillet.global.address.home(); 

但我不斷收到錯誤?我該如何解決這個問題

+4

首先,家庭不是方法... – epoch 2012-02-23 07:31:23

+1

你會得到什麼錯誤? – 2012-02-23 07:31:41

回答

6

您打電話firsthome就好像它們是功能;但是你已經將它們定義爲對象屬性。

調用skillet.global.names.first會(如果警報)顯示abe,如果你需要的功能來定義它們,你需要使用正確的函數聲明,即

names: { 
     first: function() { 
      return 'abe'; 
     }, 
     last: 'watson' 
    }, 
    addresses: { 
     home: function() { 
      return 'blah'; 
     } 
    } 
+0

*「...但你已經將它們定義爲對象類型」*不,他將它們定義爲對象*屬性*。字符串,在這種情況下。他還在另一個地方使用了「地址」,而在另一個地方使用了「地址」。 – 2012-02-23 07:46:02

+0

感謝您的回覆。所以我應該使用'skillet.global.names.first;'即我不想使用它們作爲函數,但作爲變量?我如何構造它以便我可以將它們定義爲變量? – Andy 2012-02-23 07:46:50

+0

@ T.J.Crowder,更新,安迪,通過不追加額外的'()',把它變成一個函數調用。 – epoch 2012-02-23 07:48:45

3

變化skillet.global.names.first();skillet.global.names.first;

skillet.global.address.home();更改爲skillet.global.addresses.home;

+0

是的,謝謝:)的作品 – Andy 2012-02-23 07:55:31