Zunächst einmal ist die Konvention in Großbuchstaben Ihrer Konstruktorfunktion
function Animal(name){
this.name = name
function foo(){
console.log(this.name);
}
}
Ich habe gesagt, dies zu sein in der Lage, animal
als eine Variable innerhalb reduce
ohne eine Kollision zu verwenden (vielleicht hätte ich name
verwendet werden können, aber ich dachte den obigen Punkt in Bezug auf Namenskonvention für ein Konstrukt ctor-Funktion hat sich gelohnt).
Dann, um dies so effizient wie möglich zu machen, da Sie Effizienz, mit der Sie vermutlich Zeilen des Codes bedeuten, bringen Sie alle Ihre Tiernamen in einem Array vor. Erstellen Sie dann ein Objekt, das aus allen Tiernamen besteht, als Schlüssel und Werte wie Animal
Instanzen, indem Sie reduce
verwenden. Schließlich können wir die Animal
Instanzen in der Anzeigenreihenfolge durchlaufen, indem wir forEach
auf animalNames
aufrufen; a for animal in animalObjects
Schleife ist nicht garantiert, um die Objekte in Anzeigenreihenfolge zurückzugeben.
Die angenommene Antwort im Vergleich skaliert nicht, da Sie Tiere hinzufügen, müssen Sie einen zusätzlichen Anruf hinzufügen, um zu drücken.Mit meinem Beispiel über alles, was Sie tun müssen ist, fügen Sie Einträge in die animalNames
Arrayliteral:
var animalNames = ['dog','cat','bird','squirrel','skunk','opposum']; //etc.
Ein weiterer Vorteil der oben genannten ist, dass diese animalNames
könnte von JSON
Warum er 'Tier: ein Tier Instanzen ohne die 'foo' Methode zu denken hat: Es ist genau dort in der Konstruktor-Funktion –
Oh, das könnte dich verwirren, du bist richtig, ich war mehr Bezug auf, wenn Sie mehrere Objekte speichern und nicht nur Tiere. Also für den Fall, dass Sie neue Animal() und neue Alien() drücken und Aliens nicht foo() haben. Aber ja, du bist richtig, wenn seine einzigen Tiere nicht überprüft werden sollten – ThatBrianDude