我使用以下代码来定义名为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)
的第一次调用清楚地告诉我,在控制台中创建了一个新对象“com”,其中有一个名为“foo”的对象。
到目前为止,非常好。
第二个电话console.log(com.foo);
虽然让我回复“未定义”。
是什么给出了?
答案 0 :(得分:4)
console.log(com)的第一次调用清楚地告诉我,在控制台中创建了一个新对象“com”,它有一个名为“foo”的对象。
没有。它有一个名为com
的属性,其值是一个带有foo
属性的对象。
当您只想使用com
扩展com.foo
时,foo
延长{。}}。