gpt4 book ai didi

javascript - 在 JavaScript 中是否有 "concise"命名空间的方法?

转载 作者:可可西里 更新时间:2023-11-01 01:35:45 26 4
gpt4 key购买 nike

我经常遇到将所有 JavaScript 放在 namespace 结构中的网站,如下所示:

namespaces = { com : { example: { example.com's data} }

但是,相对于其他命名空间框架安全地设置它似乎需要相对大量的代码(定义为 > 2 行)。我想知道是否有人知道一种简洁的方法来做到这一点?此外,是否有相对标准/一致的方式来构建它?例如,com 命名空间是直接附加到全局对象,还是通过命名空间对象附加?

[编辑:哎呀,显然 {com = { ... } } 不会完成任何接近我预期的事情,感谢 Shog9 指出这一点。]

最佳答案

Javascript 没有独立的命名空间。它具有可以提供解析名称的范围的功能,以及可以在给定范围内访问命名数据的对象。

这是您的示例,已更正:

var namespaces = { com: { example: { /* example.com's data */ } } }

这是一个变量 namespaces 被分配了一个对象字面量。该对象包含一个属性:com,一个具有一个属性的对象:example,一个可能包含一些有趣的东西的对象。

因此,您可以输入类似namespaces.com.example.somePropertyOrFunctionOnExample 的内容,一切都会起作用。当然,这也很荒谬。您没有分层命名空间,您有一个包含一个对象的对象,该对象包含一个包含您真正关心的东西的对象。

var com_example_data = { /* example.com's data */ };

如果没有毫无意义的层次结构,那也同样有效。

现在,如果您确实想要构建层次结构,您可以尝试这样的事情:

com_example = com_example || {};
com_example.flags = com_example.flags || { active: false, restricted: true};

com_example.ops = com_example.ops || (function()
{
var launchCodes = "38925491753824"; // hidden / private
return {
activate: function() { /* ... */ },
destroyTheWorld: function() { /* ... */ }
};
})();

...恕我直言,相当简洁。

关于javascript - 在 JavaScript 中是否有 "concise"命名空间的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13021/

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