javascript - 在javascript中创建树状结构

标签 javascript oop

如何在 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);

关于javascript - 在javascript中创建树状结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36921953/

相关文章:

java - 如何以静态和非静态方式使用枚举

oop - 我应该如何在数据库和 OOP 中建模组关系?

扩展类中的PHP依赖注入(inject)

Javascript 手机动画库 HTML5 Canvas 标签

javascript - Jquery $(this) 不在函数内工作

javascript - 多次使用一个组件时如何一次触发或检测所有组件 - Ember

javascript - 无法使用 JavaScript 计算时差

javascript - 我的计数器没有给出正确的值

java - 如何更好地设计这段代码的类结构

javascript - 基于 javascript 文本的游戏和对象