0

给定以下对象:

Parent = (function() {
  function Parent(child) {
    this.child = child;
  }
  return Parent;
})();

Child = (function() {
  function Child(name, parent) {
    this.name = name;
    this.parent = parent;
  }
  return Child;
})();

有没有办法在一个语句中创建父母和孩子?(孩子对父母有适当的参考)

有点像这样:

var parent = new Parent(new Child("john", thisThatPointsToTheNewParent));

这只是为了展示我所追求的。我知道我可以分别创建孩子和父母,然后稍后更新孩子的参考,但在我的情况下,如果我能一次性完成它会更容易。有办法吗?

4

1 回答 1

0

这是可能的,但您最终会得到循环引用,因为 Child 引用 Parent 和 Parent 引用 Child。这是实现您正在寻找的单线的一种方法:

var Parent = function (name, referenceToChild) {
    function Parent(name, child) {
        this.name = name;
        this.child = child;
        child.parent = this;
        return this;
    }
    return new Parent(name, referenceToChild);
};

var Child = function (name) {
    function Child(name) {
        this.name = name;
        this.parent = parent;
        return this;
    };
    return new Child(name);
};

var parent = new Parent("Tom", new Child("john")); 

结束于:

{                            // Parent
 name: "Tom",
 child: {                    // Child
     name: "john",
     parent: {               // Parent
         name: "Tom",
         child: {            // Child
             name: "john",
             parent: {       // Parent
                 ....
于 2013-03-26T06:13:44.227 回答