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

1つのステートメントで親と子を作成する方法はありますか?(子が親を適切に参照している場合)

このようなもの:

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

これは私が何を求めているかを示すためだけのものです。子と親を別々に作成し、後で子の参照を更新できることはわかっていますが、私の場合は、一度に実行できればはるかに簡単です。方法はありますか?

4

1 に答える 1

0

可能ですが、子が親を参照し、親が子を参照するため、循環参照になります。これは、探していたワンライナーを実現する1つの方法です。

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 に答える