In javascript wie kann ich rufen Sie einen Prototyp-Methode in einem anderen Prototyp-Methode?
angenommen ich habe eine Funktion:
function test(){}
test.prototype.method01=function(){
//do something
}
test.prototype.method02=function(){
//how can I call the method01?
//this.method01()...?
//but the chrome through an error:
//Uncaught TypeError: Object #<HTMLImageElement> has no method 'method01'
}
Bearbeitet:
in der Tat die method01 wie diese:
test.prototype.method02=function(){
$('.cpy').resizable({
}).draggable({
start:function(e,ui){
this.method01();
}
});
}
- Sind Sie zuweisen
method02
für eine Veranstaltung ein Bild von keine chance? - Es hängt davon ab, wie Sie Sie nennen
method02
. Sie sollten Lesen Sie die MDN Artikel überthis
. - haben verbessern meine Frage,zeigen, wie ich es nennen
- Wie so oft in jQuery, innerhalb der
start
Rückrufthis
bezieht sich auf das element, das Sie aufrufendraggable
auf, in diesem Fall.cpy
. Sie haben, um einen Verweis auf diethis
vonmethod02
. - Verwandte: stackoverflow.com/questions/8778874/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zur Erhaltung der
this
Referenz in eine lokale variable, so dass die callback-Funktion, können es verwenden, beim Aufruf der anderen Methode. Diethis
Referenz gebunden ist bei jedem Funktionsaufruf, einschließlich Anrufe bei callback-Funktionen, wie Ihr Sie mit in die ".draggable ()" - setup. Wenn das heißtthis
auf etwas anderes aus derthis
in Ihrem "method02" - Funktion.Ja, man könnte manuell den cache
this
in den lexikalischen Umfang wie die anderen Antworten in dieser Frage vorschlagen. Aber die alternative, die ich vorschlagen würde ist das erstellen einer gebundenen Methode mit$.proxy
oderfunction.bind
als Sie Ihren Aufruf zurück.Gebundene Methoden werden immer dann aufgerufen, mit einer stabilen
this
. Ich finde Sie sehr viel besser lesbar, als Bizarr benannten Referenzen aufthis
in höhere Bereichewas über