2

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)

どんな洞察も高く評価されます...

4

3 に答える 3

5

Since objects are dynamic, just add pet later:

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

var spot = {
    owner : peter
};

peter.pet = spot;

EDIT - removed a bad attempt at adding a function to the peter object. To do it right, see Renan's post.

于 2013-07-22T19:04:13.307 に答える
3

Set the reference after you created spot:

var peter = {
  pet : undefined
}

var spot = {
  owner : peter
}

peter.pet = spot
于 2013-07-22T19:04:30.890 に答える
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);
于 2013-07-22T19:04:40.830 に答える