Aufruf einer Methode aus einem event-handler
Ich habe diesen code an dem ich arbeite, aber jedes mal, wenn ich rufe die init-Methode bekomme ich immer einen Fehler
diese.addElement ist nicht eine Funktion
ist es, weil ich kann nicht rufen Methoden aus der event-Handler ?
function editor () {
this.init = function () {
$("#area").bind('click' , this.click_event );
}
this.addElement = function () {
console.log("adding element");
}
this.click_event = function(event) {
this.addElement();
console.log("click event in x : "+event.data);
}
}
- Sie können auf jeden Fall Methoden aufrufen von event-Handlern. Die Frage ist, was ist
this
innerhalbclick_event
? Das verstehen und die Welt ist Ihre Muscheln. - auch wenn ich entfernen Sie "dieses" ich bekomme immer noch den gleichen Fehler
- Wenn Sie entfernen
this
es ist immer noch da implizit:this.addElement()
ist das gleiche wieaddElement()
. Aber prüfenthis
- es ist ziemlich wahrscheinlich, es ist nicht, was Sie wollte. - in Ihrem klicken Sie auf Rückruf,
this
nicht auf das Objekt dereditor
mehr. Tunconsole.log(this)
innenaddElement
um herauszufinden, wasthis
bezieht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie dieses Buch Lesen, JavaScript: die Guten Teile und besuchen Sie die Crockenator der Website hier, crockford.com
Lesen Sie außerdem über die JavaScript - "das" Problem hier, http://www.quirksmode.org/js/this.html
this
ist sehr unterschiedlich in JavaScript als in manchen anderen Sprachen, wie Java oder C#. Es ist bestimmt nicht ganz durch, wie eine Funktion genannt, nicht, wo er definiert wird. Mehr: blog.niftysnippets.org/2008/04/you-must-remember-this.html