/ / JavaScriptで循環参照を設定する方法-javascript

JavaScriptで循環参照を設定する方法 - javascript

JavaScriptに小さな問題があります。私は次のことをしたいと思います:

var peter = {
pet : spot
}

var spot = {
owner : peter
}

上記のコードは正常に実行されますが、peter.petは未定義になります。 spot.ownerが定義されますが。次のようなことをするより良い方法がありますか?

var peter = {
pet : "spot"
}

var spot = {
owner : peter
}

peter.pet = eval(peter.pet)

どんな洞察も大歓迎です...

回答:

回答№1は5

オブジェクトは動的なので、追加するだけです pet 後で:

var peter = {
// anything else you want to set
};

var spot = {
owner : peter
};

peter.pet = spot;

編集-peterオブジェクトに関数を追加するという悪い試みを削除しました。正しく行うには、Renanの投稿を参照してください。


回答№2の場合は3

スポットを作成した後に参照を設定します。

var peter = {
pet : undefined
}

var spot = {
owner : peter
}

peter.pet = spot

答え№3の2
var peter = {};
var spot = {owner: peter};
peter.pet = spot;

または、タイピングを強化することもできます。

PetOwner = function () {};
PetOwner.prototype.pet = null;

Animal = function (owner) {
this.owner = owner;
this.owner.pet = this;
};
Animal.prototype.owner = null;

var peter = new PetOwner();
var spot = new Animal(peter);