Javascript 关联数组

标签 javascript associative-array

在我看来这应该可行,但我看不出问题到底是什么。

我收到的错误是“未定义 DDROA”

谁能帮我解答一下。

var DDROA = {
    AllowedRoutes : {
        AR0 : {text : 'SomeText', value : 'SomeValue'},
        AR1 : {text : 'SomeText2', value : 'SomeValue2'}
    },
    RouteContext : {
        RC0 : {text : 'None', value : '0',
            AllowedRoutes : new Array(
                DDROA.AllowedRoutes.AR0  // An error occurs here
            )
        }
     }
}

编辑

对于 Slack 的评论 你能帮忙解释一下为什么我必须完成 DDROA.AllowedRoutes 的声明,然后再声明在单独的 stament 中添加 DDROA.RouteContext 吗?本质上你是在告诉我我必须

var DDROA = {AllowedRoutes : {}};

然后

DDROA.RouteContext = {};

为什么两个单独的声明。我做类似的事情

var Utilities = {
  TextBased : {
    someFunction : function(){ 
      //do stuff 
    },
    someFunction2 : function() {
      Utilities.TextBased.someFunction();
    }
  }
};

有什么区别?在我看来我应该得到同样的错误?

最佳答案

您的 DDROA 变量仅在对象创建后被赋值。
因此,当对象被初始化时,DDROAundefined

要解决它,您应该单独设置 RouteContext,如下所示:

var DDROA = {
    AllowedRoutes : {
        AR0 : {text : 'SomeText', value : 'SomeValue'},
        AR1 : {text : 'SomeText2', value : 'SomeValue2'}
    }
};
DDROA.RouteContext = {
    RC0 : {text : 'None', value : '0',
        AllowedRoutes : [ DDROA.AllowedRoutes.AR0 ]  //An error does not occur here
    }        
};

此外,当给定单个参数时,Array 构造函数采用数组的长度

要创建包含单个元素的数组,请使用数组字面量,例如 [ DDROA.AllowedRoutes.AR0 ]


要回答您编辑的问题,函数内的代码仅在调用函数时执行,即在分配变量之后。

关于Javascript 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695476/

相关文章:

javascript - 如何通过javascript在crm中的选择列表中保存数据

MySQL用序列化数据连接两个表,递归?

javascript - Node.js 范围错误

javascript - Firefox Add-on Builder 扩展调试

php - 如何为下面给出的场景创建 SQL 查询?

php - 将具有相同值的数组元素放入一个元素中并连接它们的键

javascript - 合并关联数组,获取最新的,并删除重复的 id

linux - 在 bash 关联数组中使用变量作为键

javascript - Tumblr photoset 在 ipad 上没有响应

javascript - 如何在 Angular 指令的 Jasmine 单元测试中触发点击事件?