Durch die Verwendung von Instanzmethoden als Rückruf für Ereignishandler wird der Bereich this
von "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.
this
ist in JavaScript dynamisch. Er wird bestimmt, wenn eine Funktion aufgerufen wird , nicht, wenn sie deklariert wird."
self === this
. Daher ist self
in lokalen Kontexten sinnvoll und folgt dem Muster.
self
da es einwindow.self
Objekt 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
.