自动初始化js中的对象

时间:2013-09-04 16:31:11

标签: javascript object

我在js中遇到以下错误

Cannot read property 'charlie' of undefined 

我正在设置这样的值

alpha.beta.charlie.delta.echo = [];

但只有alpha和beta被初始化为对象。那么如何在不编写

的情况下自动初始化对象charlie和echo作为对象
alpha.beta.charlie = {};
alpha.beta.charlie.delta = {}
alpha.beta.charlie.delta.echo = [];

4 个答案:

答案 0 :(得分:1)

必须初始化..

alpha={beta:{charlie:{delta:[]}};

然后alpha.beta.charlie.delta将是你的[]空数组;

答案 1 :(得分:1)

你不能 - 你可以做的最好的事情就是这样:

alpha.beta = { charlie: { delta: { echo: [] } } };

如果您不知道对象是否已初始化,那么保留第一个表单并执行以下操作会更安全:

alpha.beta                    = alpha.beta || {};
alpha.beta.charlie            = alpha.beta.charlie || {};
alpha.beta.charlie.delta      = alpha.beta.charlie.delta || {}
alpha.beta.charlie.delta.echo = alpha.beta.charlie.delta.echo  || [];

答案 2 :(得分:0)

在某些时候你必须声明alpha属性,这样做的一个较短版本是

alpha.beta.charlie = {
  delta: {
    echo: []
  }
}

答案 3 :(得分:0)

javascript中没有自动初始化功能(除非是使用代理的丑陋黑客或者之前知道属性名称)。

相反,只需嵌套对象文字以直接在它们上创建属性,而不是创建空对象并在之后为它们添加属性:

alpha.beta = {
    charlie = {
        delta: {
            echo: []
        }
    }
};

或短

alpha.beta = {charlie: {delta: {echo: []}}};