次のコードを使用して、com.foo という名前の新しい名前空間を定義します。
function extendNamespace(ns, ns_string) {
var parts = ns_string.split('.');
var parent = ns;
for (var i = 0; i < parts.length; i++) {
//create a property if it doesnt exist
if (typeof parent[parts[i]] == 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return ns;
}
var com = {};
extendNamespace(com, "com.foo");
console.log(com); // OK (even has an object called "foo"!!)
console.log(com.foo); // Undefined ???
の最初の呼び出しはconsole.log(com)
、「foo」というオブジェクトを持つ新しいオブジェクト「com」が作成されたことをコンソールに明確に示しています。
ここまでは順調ですね。
ただし、 2番目の呼び出しconsole.log(com.foo);
では「未定義」が返されます。
何を与える?