如何在javascript中引用对象?我有以下代码:

// define nodes
var NodeA = new Object();
var NodeB = new Object();

NodeA = {
    name: "A",
    children: [
        NodeB
    ]
}

NodeB = {
    name: "B",
    children: []
};

var test = NodeA.children[0].name;
// How can I make test = "A" ???  <----------------
alert(test);


我知道,如果在创建NodeA之前先创建NodeB,它将解决我的问题。

最佳答案

您可以使用Object.assign将属性分配给NodeB,而不是将NodeB设置为对全新对象的引用:



var NodeB = {};

var NodeA = {
    name: "A",
    children: [
        NodeB
    ]
}

Object.assign( NodeB, {
    name: "B",
    children: []
} );

var test = NodeA.children[0].name;
alert(test);





请注意,要获得Object.assign支持的Internet Explorer,您需要使用Polyfill
您也可以只将属性分配给现有对象,而不是使用对象文字符号创建一个新的属性:



var NodeB = {};

var NodeA = {
    name: "A",
    children: [
        NodeB
    ]
}

NodeB.name = "B";
NodeB.children = [];

var test = NodeA.children[0].name;
alert(test);

09-28 10:37