Javascript 全局名称空间变量?

Javascript 全局名称空间变量?,javascript,jquery,namespaces,Javascript,Jquery,Namespaces,我正在尝试做一些类似的事情 (function( skillet, $, undefined ) { skillet.global = { names: { first: 'abe', last: 'watson' }, addresses: { home: 'blah' } } }( window.skillet = window.skillet || {}, jQuery )); 这样我就可以像 skillet.gl

我正在尝试做一些类似的事情

(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();

但我总是出错?我如何着手修复此问题

您首先调用的是
主页
,就好像它们是函数一样;但您已经将它们定义为对象属性

调用
skillet.global.names.first
将显示
abe
,如果需要在函数中定义它们,则需要使用正确的函数声明,即

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

更改
skillet.global.names.first()
skillet.global.names.first


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

first和home不是方法……”……但您已经将它们定义为对象类型“不,他将它们定义为对象属性。字符串,在本例中为。他在一个地方使用了
地址
,但在另一个地方使用了
地址
。感谢您的回复。所以我应该使用
skillet.global.names.first即,我不想将它们用作函数,而是用作变量?我该如何构造它,以便将它们定义为变量?@T.J.Crowder,updated,Andy,通过不附加额外的
()
,将其转换为函数调用。@Andy:epoch的回答说明了如何使它们变为函数。(无论如何,只有一种方式)哈哈,是的,我的错误是:P.仍然在学习名称空间,所以对它的工作原理有点困惑:)谢谢