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

Whats wrong with this javascript object-literal notation?

本文关键字:什么 问题 表示 javascript 对象 文字 这个      更新时间:2023-09-26

我正试图为我的网站实现一个.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, funcond )。这段代码确实可以工作,但是netbeans似乎不喜欢,而不喜欢。netbeans在它的导航器中显示的唯一的东西是全局变量"myJSFile"。没有私有函数,没有公共函数,没有其他变量。我真的需要它,因为会有很多函数。

这让我觉得,我做了一些完全错误的事情。所以请给我一些建议,如何修复这些代码,成为一个更好的js程序员。

提前感谢!

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

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

对我来说,这里的问题是netbeans中的导航器,它使我认为我做错了什么,没有显示给我。

编辑(2):看起来netbeans更新了。现在它可以识别函数等等

您正在创建对象。所以你的公共函数将是myJSFile对象的属性。所以下面的代码应该可以工作:

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

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

这是module模式的一个例子。你可以在这里读到更多!