2016-10-26 12 views
0

Ich suche nach einer Lösung, wie ich auf Objekte in einem Objekt zugreifen kann. Ich mache ein Spiel, wo die verschiedenen loots sind alle Objekte und die Feinde sind ein anderes Objekt - wie folgt aus:Objekte in einem Objekt

item.ingredient.feather.birdfeather //item object 
enemy.animal.badger //enemy object 

Jetzt möchte ich der Feind Objekt eine Beute Eigenschaft haben, wo alle möglichen Beute festgestellt wird Dies ist in, wie das Objekt (und viele mehr, natürlich) in meinem Code geschrieben wird.

var enemy = { 
    animal: { 
    badger: { 
     loot: [item.ingredient.skin.badgerskin, item.ingredient.teeth.badgerteeth], 
     health: 50, 
     etc: "lala" 
    } 
    } 
} 

Aber für das Array von Objekten in meiner Beute Objekt zeigt es mir immer die Fehler „Uncaught Reference: Artikel ist nicht definiert".

Gibt es eine Möglichkeit, dass ich Objekte in Arrays in einer anderen Objektvariable schreiben kann? Vielen Dank!

EDIT:

Artikel definiert ist, aber in einer anderen js-Datei.

var item = { 
    ingredient: { 
    feather: { 
     birdfeather: { 
     name: "feathers" 
     }, 

     longfeather: { 
     name: "long feathers" 
     } 
    } 
    } 
} 

Noch sind fragen, über den Fehler

+4

Wo ist "Artikel" definiert? – PakkuDon

+0

Nun, dieser Fehler lässt mich fragen, wo/wie Sie das Element – larz

+1

deklarieren Sie können eine 'for' -Schleife verwenden, um die Eigenschaften eines Objekts zu durchlaufen. Aber Ihr Problem hat nichts damit zu tun - das Problem ist, dass Sie keine Variable haben, die das Objekt enthält. – Barmar

Antwort

1

Es gibt nichts falsch mit Ihrem enemy Objekt Deklarationscode. Alles, was es braucht, ist die ordnungsgemäße Deklaration des Objekts item. Zum Beispiel:

var item = { 
    ingredient: { 
    skin: { 
     badgerskin: { 
     id: "badgerskin", 
     name: "Badger Skin", 
     etc: 30 
     } 
    }, 
    teeth: { 
     badgerteeth: { 
     id: "badgerteeth", 
     name: "Badger Teeth", 
     etc: 80 
     } 
    } 
    } 
} 

var enemy = { 
    animal: { 
    badger: { 
     loot: [item.ingredient.skin.badgerskin, item.ingredient.teeth.badgerteeth], 
     health: 50, 
     etc: "lala" 
    } 
    } 
} 
+0

Siehe meine Bearbeitung, der Artikel ist eigentlich deklariert, aber in einer anderen Datei - vielen Dank für Ihre Hilfe! – Robstaa

0

fand ich die Antwort von mir. Weil die zwei Objekte in zwei verschiedenen js-Dateien erstellt wurden. Ich musste die Reihenfolge in der HTML-Datei ändern, in der die Skripte aufgerufen wurden. Entschuldigung für das Problem und danke für die Antworten

Verwandte Themen