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() { /* ... */ }
};
})();
... что, ИМХО, достаточно кратко.