Javascript オブジェクト: 親を取得する [重複] 質問する

Javascript オブジェクト: 親を取得する [重複] 質問する

次の(ネストされた)オブジェクトがあります。

obj: { subObj: { foo: 'hello world' } };

次に行うことは、次のようにサブオブジェクトを参照することです。

var s = obj.subObj;

ここでやりたいのは、obj変数からオブジェクトへの参照を取得することですs。次のようになります。

var o = s.parent;

これはどういうわけか可能ですか?

ベストアンサー1

別のオブジェクト (親) 内のネストされたオブジェクト (子) は、親から直接データを取得することはできません。

これを見てみましょう:

var main = {
    name : "main object",
    child : {
        name : "child object"
    }
};

メイン オブジェクトにその子の名前を尋ねると ( main.child.name)、その名前が返されます。
ただし、その逆はできません。子は親が誰であるかを知らないためです
( は取得できますmain.nameが、 は取得できませんmain.child.parent.name)。

ちなみに、このヒントを解くには関数が役に立つかもしれません。
上記のコードを拡張してみましょう。

var main = {
    name : "main object",
    child : {
        name : "child object"
    },
    init : function() {
        this.child.parent = this;
        delete this.init;
        return this;
    }
}.init();

関数内では、initを呼び出すだけで親オブジェクトを取得できますthis。そのため、オブジェクト内で直接プロパティ
を定義します。その後 (オプションで) メソッドを削除できます。最後に、関数からの出力としてメイン オブジェクトを返します。parentchild
init
init

今試してみれば、main.child.parent.nameうまくいくでしょう。
少し難しいですが、問題なく動作します。

おすすめ記事