gpt4 book ai didi

JavaScript 命名空间声明

转载 作者:IT王子 更新时间:2023-10-29 03:21:34 25 4
gpt4 key购买 nike

我创建了一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com