考虑到神圣的全局命名空间,我正在尝试为我的网站实现一个 .js 文件。这次我想以正确的方式来做,所以请帮我解决这个可能太简单的问题:
到目前为止我所拥有的:
var myJSFile = (function () {
function a (){
}
function b (){
}
return {
global1 : 0,
global2 : 0,
functionc : function (){
a();
},
functiond : function () {
a();
b();
}
};
})();
你看,我想要一个全局变量“myJSFile”,以便在全局范围内显示。还有两个私有(private)函数(a,b),两个全局变量(global1, global2)和两个全局函数(functionc, functiond ). 这段代码确实有效,但 netbeans 似乎不喜欢它。 netbeans 在其导航器中向我展示的唯一一件事是全局变量“myJSFile”。没有私有(private)的,没有公共(public)的功能,没有其他变量。我真的需要它,因为会有很多功能。
这让我觉得,我做的事情完全错了。所以请给我一些关于如何修复此代码并成为更好的 js 程序员的建议。
提前致谢!
编辑: 我知道,如何处理这个对象并像这样使用它:
myJSFile.global1 = anything;
myJSFile.functionc();
这里对我来说问题是 netbeans 中的导航器,它让我认为我做错了什么,因为没有向我显示任何东西。
编辑(二): 似乎 netbeans 已更新。现在可以识别功能等等。
最佳答案
您正在创建一个对象。因此,您的“公共(public)”函数将是 myJSFile
对象的属性。所以以下应该有效:
// Public functions
myJSFile.functionc(); // calls a()
myJSFile.functiond(); // calls a() then b()
// Public properties
myJSFile.global1; // 0
myJSFile.global2; // 0
这是module
模式的一个例子。您可以阅读更多相关信息 here !
关于javascript - 这个 javascript 对象字面量表示法有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730444/