具有嵌套对象文字的javascript访问链

时间:2013-11-15 05:28:03

标签: javascript oop namespaces

我正在开发一个项目,其中我有一个根对象文字,用于存储其余部分中使用的常量和枚举,以及嵌套的对象文字以分隔不同的功能。 像这样:

root = {
    enum : {
        FIRSTVAL : 0,
        SECONDVAL : 1,
        THIRDVAL : 2,
    },
    CONST : 0xFFE8,
}

root.display = {
    renderer : function() {
        // do something...
        do_some_fun(enum.FIRSTVAL);
    }
    // other functions
}

root.engine = {
    processor = function() {
        // do some stuff
        run_calculations(CONST);
    }
    // some other functions
}

基本上我使用顶级对象文字作为命名空间,其他对象/函数分布在多个文件中。唯一的问题是root用户的子属性无法访问根对象的属性,例如root.dengplay.renderer中的枚举或root.engine.processer中的CONST。如果root是一个函数对象,那么通过原型链很容易实现,但我希望root对象是静态的,只是作为一个容器。

在Javascript中完成此结构的最佳方法是什么?我可以使用更好的结构来实现项目封装的相同目标吗?

编辑:对不起,我没有正确引用继承。我知道root的属性可以直接访问(通过root.whatever)。我想知道是否可以将root的引用隐含在root的子级中;除非使用直接引用是Javascript的标准做法?

1 个答案:

答案 0 :(得分:3)

你是说这个意思吗? (不需要“var”但鼓励它。)

var root = {
    enum : {
    FIRSTVAL : 0,
    SECONDVAL : 1,
    THIRDVAL : 2,
    },
    CONST : 0xFFE8,
}

root.display = {
    renderer : function() {
        console.log(root.enum.FIRSTVAL);
    }
}

root.engine = {
    processor : function() {
        console.log(root.CONST);
    }
}