Betrachten Sie eine Klasse, die eine Menge anderer Objekte enthält.Dynamisch ändern, welche Klassenvariablen von Ihren Klassenfunktionen betroffen sind
function Food=(){
this.apples = 8;
this.orange = 6;
this.peach = 3;
}
Jetzt kann ich eine Add-Funktion erstellen.
Food.prototype.add(food){
this.apple += food.apple;
this.orange+=food.orange;
this.peach+=food.peach;
}
Was aber, wenn ich will wollen dynamisch in einer anderen Sache in Lebensmittel hinzufügen, die hinzufügen werden food.prototype.add auch?
Die erste Frage ist, gibt es eine einfache Möglichkeit, alle Objekte in der Klasse hinzuzufügen?
Die zweite Frage ist: Ich hätte den Code wie folgt schreiben können.
function Food =(){
this.apples = 8;
this.orange = 6;
this.peach = 3;
this.addArray = [];
this.addArray.push(this.apples);
this.addArray.push(this.orange);
this.addArray.push(this.peach);
}
Food.prototype.add(food){
for (i=0, i<this.addArray.length, i++){
this.addArray[i]+=food.addArray[i];
}
}
diese Weise, wenn ich escargot auf die Dinge hinzufügen möchte ich hinzufügen will, kann ich einfach fügen Sie es dem addArray.
Gibt es eine Möglichkeit, eine ähnliche addSet oder ein addObject zu machen. Anstatt also ein Array mit Indizes zu haben, kann ich stattdessen ein Set oder Objekt mit Namen haben?
Für mich scheint es, als würden Sie hier zwei verschiedene Strukturen zusammenfassen. Ihr "Essen" ist eigentlich "Lebensmittel" mit Namen und Mengenpaaren. Sie sind auf dem richtigen Weg, obwohl Ihre Idee, ein Objekt anstelle eines Arrays zu verwenden, viel besser erscheint. (Hier, mit "viel besser Ansatz", ich meine die einzige, die einen Sinn macht.) –
Sie können durch Objekte Eigenschaften mit 'for (var Element in Obj) {...}', obwohl basierend auf was Sie versuchen, eine Datenstruktur wie ein Array zu tun, wäre eine bessere Idee. Hauptsächlich wegen, wenn Sie irgendwelche anderen Eigenschaften zu Nahrung hinzufügen möchten, die möglicherweise nicht eine Zahl ist, die Sie * hinzufügen * möchten. –