gpt4 book ai didi

Javascript:命名空间

转载 作者:搜寻专家 更新时间:2023-11-01 04:12:00 25 4
gpt4 key购买 nike

我目前正在使用以下模式在 Javascript 中创建命名空间和单例对象:

var Namespace = function () {

var priv = {
privateVar1: '',
privateVar2: '',
privateFunction1: function () {
//do stuff
[...]
},
[...]
};

var pub = {
publicVar1: '',
publicFunction1: function () {
//do stuff with private functions and variables
priv.privateVar1 = priv.privateFunction1(pub.publicVar1);
[...]
},
[...]
};

return pub;
}();

希望您能理解。有没有一种方法可以创建您认为更干净或更好的命名空间(解释原因)?

最佳答案

其实,这都是关于语义的。如果您将代码拆分为多个文件并计划使用通用命名空间,那么这样做会更容易一些:

我喜欢这种方法的原因是它更加模块化,允许将代码分解成多个文件,然后很容易将它们压缩成一个文件而没有依赖性问题(除非你的命名空间函数相互依赖)

这样做的缺点是,如果使用不当,有时会感觉有点困惑——我想这适用于任何事物。

在你的命名空间文件中

var Namespace = {};

在您使用命名空间的其他 JavaScript 文件中

var Namespace = Namespace === undefined ? {} : Namespace;

Namespace.stuff = function () {
var private = 'foo';
function private_func() {
};

this.public = 'bar';
this.public_func = function () {
}
};

一些实际应用是:

GUI.js

// Some general GUI
var GUI = {
'MAX_WIDTH': $(window).width(),
'MAX_HEIGHT': $(window).height()
};

Toolbar.js

GUI.Toolbar = function (id) {
var self = this;

function init_visuals() {
$(id).click(function () {
self.alert_broken();
});
};

function initialize() {
init_visuals();
};

this.alert_broken = function () {
alert('Broken!');
};

initialize();
};

Menu.js

GUI.Menu = function () {
}; GUI.Menu.prototype = new GUI.Toolbar();

现在,单例——这完全是另一个论点。

关于Javascript:命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1542295/

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