带有嵌套对象字面量的 javascript 访问链

标签 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 对象的属性,例如 root.display.renderer 中的 enum 或 root.engine.processer 中的 CONST。如果 root 是一个函数对象,那么通过原型(prototype)链可以很简单地完成,但我希望 root 对象是静态的并且仅充当容器。

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

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

最佳答案

你的意思是这样吗? (“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);
    }
}

关于带有嵌套对象字面量的 javascript 访问链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19994179/

相关文章:

javascript - keyup 事件中的输入 val() 被延迟

python - 如何正确组织类方法的 "helper"方法

c++ - 错误: 'member' is private within this context - namespace

Php 从 $_GET[] 元素创建命名空间路径并使用它

python - 在 python 中分组常量

PHP ajax bug 加载更多

Javascript - HAPPY.js 密码

javascript - 如何将输入值添加到数组中

python - 对象继承和嵌套 cmd

c++ - 为什么我的 vector 没有随着我对其元素所做的更改而更新?