在JavaScript中创建名称空间
我对JavaScript有点陌生。多年来我用C#写了很多实用函数。我想将其中一些迁移到JavaScript。当我在代码中使用它们时,作为一名开发人员,我想打以下电话:在JavaScript中创建名称空间,javascript,namespaces,Javascript,Namespaces,我对JavaScript有点陌生。多年来我用C#写了很多实用函数。我想将其中一些迁移到JavaScript。当我在代码中使用它们时,作为一名开发人员,我想打以下电话: myCompany.myLibrary.functionName(param1, param2, etc); 我的问题是,如何在JavaScript中设置它?例如,目前,我有: var functionName = function() { // do stuff }; 然而,我不确定如何将其“范围”到myCompany.
myCompany.myLibrary.functionName(param1, param2, etc);
我的问题是,如何在JavaScript中设置它?例如,目前,我有:
var functionName = function() {
// do stuff
};
然而,我不确定如何将其“范围”到myCompany.myLibrary中。这类事情可能发生吗。我想是的。我是基于像lodash这样的图书馆。然而,由于我对JavaScript有点陌生,我的解释可能不正确
谢谢你能提供的任何帮助
var myCompany = {
myLibrary1: {
func1: function (param1, param2, etc) {...},
func2: function (param1, etc) {...},
prop1: 7,
prop2: 'xyz'
},
myLibrary2: {
func1: function () {...},
prop1: 123.0004
}
};
然后你可以:
myCompany.myLibrary1.func1(1, 2, 3);
myCompany.myLibrary2.prop1 = 'hello world';
我喜欢这样一种方法,即使用一个“namespace”函数,在您的案例中使用字符串“myCompany.myLibrary”,并创建该对象结构(如果不存在)并返回对该对象的引用:
namespace('myCompany.myLibrary').functionName = function(){}
您可以在这里找到如何编写名称空间函数的示例:使用下面的代码,您可以从不同的文件扩展“名称空间”。我相信这就是所谓的模块模式
var myCompany;
(function (myCompany) {
(function (myLibrary) {
myLibrary.someFunction = function () {
};
})(myCompany.myLibrary || (myCompany.myLibrary = {}));
var myLibrary = myCompany.myLibrary;
})(myCompany || (myCompany = {}));
这是组织JavaScript库的另一种方式(同时拥有自己的名称空间) 用法:
myCompany.myLibrary.myPublicProperty;
myCompany.myLibrary.myPublicMethod1();
myCompany.myLibrary.myPublicMethod2(x,y);
没有名称空间,您需要的只是一个使用点符号访问的对象。看看这是否有助于查看AMD模块,而不是简单地为代码命名。还有更多的好处。
myCompany.myLibrary.myPublicProperty;
myCompany.myLibrary.myPublicMethod1();
myCompany.myLibrary.myPublicMethod2(x,y);