1

我使用以下代码来定义一个名为 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);虽然返回我“未定义”。

是什么赋予了?

4

1 回答 1

4

第一次调用 console.log(com) 在控制台中清楚地显示我已经创建了一个新对象“com”,其中包含一个名为“foo”的对象。

不,它有一个名为 的属性com,其值是一个具有名为 的属性的对象foo

当您只想使用 扩展它时,com您正在扩展它。com.foofoo

于 2012-08-17T21:36:16.423 回答