如何在JavaScript中创建命名空间,以便我的对象和函数不会被其他同名的对象和函数覆盖?我用过以下内容:
if (Foo == null || typeof(Foo) != "object") { var Foo = new Object();}
Run Code Online (Sandbox Code Playgroud)
这样做有更优雅或简洁的方式吗?
我正在维护一些遗留代码,我注意到使用了以下用于定义对象的模式:
var MyObject = {};
(function (root) {
root.myFunction = function (foo) {
//do something
};
})(MyObject);
Run Code Online (Sandbox Code Playgroud)
这有什么用途吗?它只相当于做以下事情吗?
var MyObject = {
myFunction : function (foo) {
//do something
};
};
Run Code Online (Sandbox Code Playgroud)
我不打算采用神圣的方式将整个代码库重构为我的喜好,但我真的很想了解定义对象的迂回方式背后的原因.
谢谢!
对于我的Web应用程序,我在JavaScript中创建一个名称空间,如下所示:
var com = {example: {}};
com.example.func1 = function(args) { ... }
com.example.func2 = function(args) { ... }
com.example.func3 = function(args) { ... }
Run Code Online (Sandbox Code Playgroud)
我也想创建"私有"(我知道这在JS中不存在)命名空间变量,但我不确定什么是最好的设计模式.
可不可能是:
com.example._var1 = null;
Run Code Online (Sandbox Code Playgroud)
或者设计模式是否是别的?
我正在学习ES6模块.但我对模块和库之间的区别感到困惑.
以及模块和库与node.js包的不同之处.