var test = {
one: {},
two: {},
};
test['two'].parent = test['one'];
我想要测试的内容:
test = {
one: {},
two: { parent: {}, }
实际上有什么:
test = {
parent: {},
two: { parent: {}, }
为什么test.one会成为test.parent?
我希望test.two.parent保存对test.one的引用。我该怎么做?
答案 0 :(得分:3)
您使用的浏览器是什么?它可能会有所作为。
我在Firefox上接收Firebug中的预期结果测试,但我不建议混合和匹配属性访问语法(syntaxes?syntaxen?)。
而不是:
test['two'].parent = test['one'];
我愿意:
test['two']['parent'] = test['one'];
答案 1 :(得分:3)
为什么test.one会成为test.parent?
没有。得到的结构是:
{
one: {},
two: { parent: {} }
}
其中parent
引用one
引用的同一对象。
如果你这样做:
test.one.cheese = "crackers";
...下面的结果将是“破解者”
alert(test.two.parent.cheese); // "crackers"
答案 2 :(得分:1)
您对此声明的作用的声明:
test['two'].parent = test['one'];
不正确。代码已经执行了您想要的操作:它向test.two
添加了一个“父”属性,因此test.two.parent
处会有一个空对象。