Gewusst wie: aufrufen einer Methode in ein javascript-Objekt
Ich bin nur zu lernen, darüber, wie am besten organisieren meine javascript-code, und ich hatte eine Frage bezüglich dieses kleine Stück code, den ich schrieb:
var reportsControllerIndex = {
plotMapPoints: function(data) {
//plots points
},
drawMap: function() {
$.getJSON('/reports.json', function(data) {
reportsControllerIndex.plotMapPoints(data);
});
},
run: function() {
reportsControllerIndex.drawMap();
}
};
Die Frage ist in Bezug auf das aufrufen einer weiteren Funktion von reportsControllerIndex innerhalb der reportsControllerIndex Objekt. Ich hatte zuerst versucht, das folgende Stück code für die run-Funktion:
run: function() {
this.drawMap();
}
welche perfekt funktionierte. Allerdings habe ich dann schnell gefunden, dies zu tun für die drawMap Funktion:
drawMap: function() {
$.getJSON('/reports.json', function(data) {
this.plotMapPoints(data);
});
}
funktioniert nicht, da "dieser" würde jetzt beziehen sich auf die callback-Funktion der getJSON-Aufruf.
War meine Lösung zu einfach reportsControllerIndex vor allem der Methoden, die ich anrufen wollen, aber ich war neugierig: ist es ein relativ Weg für den Aufruf von Funktionen in einem Gesamt-Objekt wie folgt (so wie man es tun würde, mit einer Klasse in einem standard-OO-Sprache)? Oder bin ich gezwungen, es zu tun wie ich momentan bin, nur den Aufruf der Methoden durch den Namen des Objekts?
InformationsquelleAutor der Frage joeellis | 2010-12-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Sie speichern möchten, die
this
Bindung in eine variable.InformationsquelleAutor der Antwort ChaosPandion
Späte Antwort, aber jQuery hat eine Methode mit dem Namen
jQuery.proxy()
die für diesen Zweck hergestellt. Sie übergeben der Funktion zusammen mit dem Wert derthis
Sie behalten wollen, und es gibt eine Funktion, die sicherstellt, dassthis
korrekt ist.Diese Weise brauchen Sie nicht, um eine variable definieren.
InformationsquelleAutor der Antwort user113716
Müssen Sie eine variable Referenz zu
this
außerhalb dergetJSON
Funktion.getJSON
setzt den Kontext des Rückrufs in jquery.Wie diese:
InformationsquelleAutor der Antwort Josiah Ruddell
beim definieren Ihrer Funktion können Sie einfach hinzufügen .bind(this), um die richtige Kontext für diese Funktion.
InformationsquelleAutor der Antwort Danilo Souza Morães
Kann man es schreiben mag:
Diese Klasse funktioniert genauso wie Sie es Tat, und man kann immer noch call-Methode die Klasse durch:
In diesem Paradigma, definierte ich
self
zeigen, auf die Klasse selbst, so dass Sie anrufen könnenself
wo Sie wollen in der Klasse.Weiter, dieses Paradigma lösen können, die
this
problem in der Funktion, die Sie als Rückruf auf einen anderen funciton:InformationsquelleAutor der Antwort Nick Tsai