我有一个试图引用先前定义的值的javascript文件,但该值的容器为null:
if (typeof (myNamespace) == "undefined") { myNamespace = {}; }
myNamespace.myClass = {
myConstants: {
value: "someValue",
},
something : {
values: [myNamespace.myClass.myConstants.value] // Errors here
}
};
我认为JavaScript是以自上而下的方式执行的,因此在填充myNamespace.myClass.myConstants.value
时应该已经定义了something.values[]
。
答案 0 :(得分:3)
在评估您的表达式myNamespace.myClass.myConstants.value
时,myNamespace.myClass
的值仍为undefined
。在评估整个对象初始值设定项表达式之前,不会发生赋值。
这样做的结果是无法从对象初始化表达式内部进行内部交叉引用。您必须将其拆分为单独的作业。
myNamespace.myClass = {
myConstants: {
value: "someValue",
},
something : {
values: []
}
};
myNamespace.myClass.something.values.push(myNamespace.myClass.myConstants.value);