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() { /* ... */ }
};
})();
...也就是说,恕我直言,相当简洁。