Durch die Verwendung von Instanzmethoden als Rückruf für Ereignishandler wird der Bereich thisvon "Meine Instanz" in "Wie auch immer der Rückruf genannt wird" geändert . Mein Code sieht also so aus
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Es funktioniert, aber ist das der beste Weg, es zu tun? Es sieht seltsam für mich aus.
thisist in JavaScript dynamisch. Er wird bestimmt, wenn eine Funktion aufgerufen wird , nicht, wenn sie deklariert wird."
self === this. Daher ist selfin lokalen Kontexten sinnvoll und folgt dem Muster.
selfda es einwindow.selfObjekt gibt , das Sie möglicherweise versehentlich verwenden, wenn Sie vergessen, Ihre eigene Variable zu deklarierenself(z. B. wenn Sie Code verschieben). Das Erkennen / Debuggen kann ärgerlich sein. Besser so etwas zu benutzen_this.