我创建了一个 javascript 类如下:
var MyClass = (function() {
function myprivate(param) {
console.log(param);
}
return {
MyPublic : function(param) {
myprivate(param);
}
};
})();
MyClass.MyPublic("hello");
上面的代码是有效的,但我的问题是,如果我想为该类引入命名空间怎么办。
基本上我希望能够像这样调用类:
Namespace.MyClass.MyPublic("Hello World");
如果我添加了 Namespace.MyClass,它会抛出错误“语法错误”。 我确实尝试添加“window.Namespace = {}”,但它也不起作用。
谢谢..:)
最佳答案
通常我建议这样做(假设 Namespace
没有在别处定义):
var Namespace = {};
Namespace.MyClass = (function () {
// ...
}());
一种更灵活但更复杂的方法:
var Namespace = (function (Namespace) {
Namespace.MyClass = function() {
var privateMember = "private";
function myPrivateMethod(param) {
alert(param || privateMember);
};
MyClass.MyPublicMember = "public";
MyClass.MyPublicMethod = function (param) {
myPrivateMethod(param);
};
}
return Namespace
}(Namespace || {}));
这会像上面那样构建 Namespace.MyClass
,但不依赖于已经存在的 Namespace
。如果它尚不存在,它将声明并创建它。这还允许您在不同的文件中并行加载 Namespace
的多个成员,加载顺序无关紧要。
更多信息:http://www.adequatelygood.com/2010/3/JavaScript-Module-Pattern-In-Depth
关于JavaScript 命名空间声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2504568/