Javascript命名空间定义自引用

javascript namespace definition self reference

本文关键字:自引用 定义 命名空间 Javascript      更新时间:2023-09-26

我试图定义一个javascript命名空间,但在命名空间内,我有对象是基本类的扩展(使用骨干和下划线):

namespace = {
    subspace: {
        A: some_class.extend({...}),
        B: A.extend({...})
    }
}

但是这会产生一个问题,因为a还没有定义。这种情况下的最佳实践是什么?此外,我在这个命名空间中有多个子空间,后面的子空间不能引用前面的子空间。

namespace = {
    subspace: {
        A: some_class.extend({...}),
        B: A.extend({...})
    },
    subspace2: {
        some_function: function(){
            <how do i create an instance of A for example? > 
        }
    }
}

您应该使用辅助函数来管理它。这是一个来自"JavaScript Patterns"的实现,作者是Stoyan Stefanov。

考虑应用程序全局对象为MYAPP

和添加命名空间的功能:

MYAPP.namespace('MYAPP.modules.module1')

,这里是namespace方法的示例实现:

MYAPP.namespace = function(ns_string) {
    var parts = ns_string.split('.'),
        parent = MYAPP,
        i;
    if (parts[0] === 'MYAPP') {
        parts = parts.slice(1);
    }
    for (i=0; i<parts.length; i++) {
        if(typeof parent[parts[i]] === 'undefined') {
            parent[parts[i]] = {}
        }
        parent = parent[parts[i]];
    }
    return parent;
}