Javascriptにはスタンドアロンの名前空間がありません。名前を解決するためのスコープを提供できる関数と、特定のスコープでアクセス可能な名前付きデータに貢献できるオブジェクトがあります。
これがあなたの例です、修正されました:
var namespaces = { com: { example: { /* example.com's data */ } } }
namespaces
これは、オブジェクトリテラルが割り当てられている変数です。オブジェクトには1つのプロパティが含まれています:com
、1つのプロパティを持つオブジェクト: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() { /* ... */ }
};
})();
...これは、私見ですが、かなり簡潔です。