gpt4 book ai didi

Javascript 命名空间 - 这种特殊方法是好的做法吗?

转载 作者:行者123 更新时间:2023-11-29 15:00:08 25 4
gpt4 key购买 nike

我是一个 javascript 新手,我想出了以下命名空间方案:

(function() {
var ns = Company.namespace("Company.Site.Module");

ns.MyClass = function() { .... };

ns.MyClass.prototype.coolFunction = function() { ... };

})();

Company.namespace 是一个由脚本注册的函数,它简单地创建对象链直到 Module。

在外部,在非全局范围内:

var my = new Company.Site.Module.MyClass();

我特别询问我从全局范围隐藏变量 ns 的方法 - 通过立即执行的包装匿名函数。我可以随处编写 Company.Site.Module,但与将 ns 存储在局部变量中相比,它并不干而且有点乱。

你怎么说?这种方法有什么缺陷?还有其他一些被认为更标准的方法吗?

最佳答案

你不需要像那样限定类的范围,只有当你在类之外有全局变量时才需要。我使用这种方法...

MyApp.MyClass = function() {
};

MyApp.MyClass.prototype = {
foo: function() {
}
};

另请注意,我使用对象字面量来简化原型(prototype)声明

但是,如果你需要限定全局变量的范围,那么你可以这样做

(function() {
var scopedGlobalVariable = "some value";

MyApp.MyClass = function() {
};
MyApp.MyClass.prototype = function() {
foo: function() {
}
};
})();

关于Javascript 命名空间 - 这种特殊方法是好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324886/

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