0

我在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

4 回答 4

1

必须初始化所有..

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

那么 alpha.beta.charlie.delta 将是你的 [] 空数组;

于 2013-09-04T16:33:57.787 回答
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  || [];
于 2013-09-04T16:35:35.630 回答
0

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

alpha.beta.charlie = {
  delta: {
    echo: []
  }
}
于 2013-09-04T16:34:18.160 回答
0

javascript 中不可能进行自动初始化(除非使用代理的丑陋黑客攻击或知道之前的属性名称)。

相反,只需嵌套对象字面量以直接在其上创建属性,而不是创建空对象并随后在其上放置属性:

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

或短

alpha.beta = {charlie: {delta: {echo: []}}};
于 2013-09-04T16:34:35.217 回答