Ich möchte eine Sammlung von Objekten erstellen, die wie ein Array funktioniert. Vor einiger Zeit habe ich this question und ich kam mit der folgenden Lösung mit Hilfe der Personen, die mir geholfen:Javascript - Sammlung von Objekten mit übergeordneten Eigenschaften gemeinsam
Newobj.Collection = function(){
Array.apply(this);
for(var i = 0; i < arguments.length; i++){
for(var j = 0; j < arguments[i].length; j++){
this.push(arguments[i][j]);
}
}
return this
}
Newobj.Collection.prototype = Object.create(Array.prototype);
Newobj.Collection.prototype.push = function(o){
Array.prototype.push.call(this, new Newobj.Element(o));
}
Dies ist jedoch die Kinder, die Blätter von der Mutter nicht angeschlossen. Stellen Sie sich zum Beispiel vor, dass diese Sammlung eine render()
-Funktion hat, die ihre Kinder dazu bringt, etwas HTML auf die Seite zu drucken. Nun, ich möchte in der Lage sein, etwas zu sagen wie:
Newobj.Collection.html_container = '#cont';
Newobj.Collection.render = function(){
$.each(this, function(i, el){
el.render()
})
}
Newobj.Element.render = function(){
$(parent.html_container).html('.......')
}
Es sollte verschiedene Kollektionen auf einer Seite festlegen können, so stellen eine globale container
für die ganze Newobj.Collection
s ist keine Lösung. Dies ist ein Beispiel, und ich brauche dies für komplexere Prozesse als nur eine render()
Funktion.
Jeder hat eine Idee, wie kann ich ein Array machen, um auf eine Elternklasse zugreifen zu können, zu der es gehört?
Wenn die Lösung könnte JSON.stringify
ed und als ein Array auf der Serverseite gesehen werden, wäre es auch toll, obwohl es nicht das Hauptproblem für diese Frage ist. Jetzt, wenn ich eine Eigenschaft auf das Array festlegen, wird es als ein Objekt mit size > 0
auf der Serverseite gesehen.
Vielen Dank!
Hätte nicht gedacht. Ich werde es testen und wenn ich sehe, ob es funktioniert (das sollte es, wie ich es gelesen habe), markiere ich deine Antwort als die richtige! Danke für Ihre Hilfe! – Unapedra
Ich habe ein * mögliches * mögliches Problem gefunden. Wenn ich die * Sammlung * als Parameter verwende, was passiert dann mit der Elementnummer 100, wenn ich dort bin? Wird es eine Eigenschaft namens * parent * haben, in der es bereits 99 andere Elemente gibt? und der 99., wird eine * Eltern * -Eigenschaft mit einem Array mit 98 Elementen haben, und so weiter? – Unapedra
Dieser Parameter ist eine Objektreferenz, so dass es keine 100 Objekte, sondern ein Objekt und 100 Referenzen gibt, so dass es keine Leistungsprobleme geben wird. –