在构造函数中将父级传递给子级

时间:2013-03-26 05:21:21

标签: javascript

给出以下对象:

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));

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

1 个答案:

答案 0 :(得分: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
                 ....