我在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 = [];
答案 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: []}}};