这个javascript对象 - 文字表示法有什么问题?

时间:2013-05-24 08:11:03

标签: javascript scope encapsulation object-literal

我正在尝试为我的网站实现一个.js文件,考虑到神圣的全局命名空间。这次我想以正确的方式做到这一点所以请帮助我解决这个可能太简单的问题:

到目前为止我所拥有的:

var myJSFile = (function () {

  function a (){
  } 
  function b (){   
  }

  return {
    global1 : 0,
    global2 : 0,             

    functionc :  function (){
      a();
    },

    functiond : function () {
      a();
      b();
    }
  }; 
})(); 

您看到我希望将全局变量“ myJSFile ”显示在全局范围内。还有两个私有函数( a,b ),两个全局变量( global1,global2 )和两个全局函数( functionc,functiond )。 这段代码确实有效,但netbeans似乎喜欢它。 唯一的, netbeans在其导航器中显示我,是全局变量“myJSFile”。没有私人,没有公共职能,没有其他变数。而且我真的需要它,因为会有很多功能。

这让我觉得,我做错了。所以请给我一些关于如何修复此代码并成为更好的js程序员的建议。

提前多多感谢!

编辑: 我知道,如何处理这个对象并使用它:

myJSFile.global1 = anything;
myJSFile.functionc();

这里的问题是netbeans中的导航器,这让我觉得我做错了什么都不对我说。

编辑(II): 好像netbeans得到了更新。现在它能够识别功能等等。

1 个答案:

答案 0 :(得分:0)

您正在创建一个对象。因此,您的“公共”函数将是myJSFile对象的属性。所以以下内容应该有效:

// Public functions
myJSFile.functionc(); // calls a()
myJSFile.functiond(); // calls a() then b()


// Public properties
myJSFile.global1; // 0
myJSFile.global2; // 0

这是module模式的示例。您可以阅读有关here的更多信息!