Ich weiß nicht, ob der Titel der Frage zu verwirrend ist, aber hier gehe ich.Zugriff auf das 'This' -Objekt des aktuellen Elements, wenn ein externes 'This' bind war
Wenn habe ich so etwas wie:
var Test = function(){
this.foo = a;
}
Test.prototype.init = function() {
$(document).on('change', '.form-control', this.myFunction);
}
Test.prototype.myFunction = function() {
console.log(this.foo);
console.log(this);
}
Mein Verständnis ist, dass beim Drucken ‚dieses‘ in myFunction würde es den Ausführungskontext der Funktion drucken, die den Anruf gemacht, in diesem Fall, es wird Drucken Sie den Ausführungskontext für .on ('ändern' ...). Wenn also this.foo gedruckt wird, weil es in diesem Kontext nicht existiert, dann wird undefined ausgedruckt.
Um dieses Problem zu lösen und this.foo zugreifen zu können, ich tue das folgende:
Test.prototype.init = function() {
$(document).on('change', '.form-control', (this.myFunction).bind(this));
}
Test.prototype.myFunction = function() {
console.log(this.foo);
console.log(this);
}
Ich Bindung 'diese' zum Funktionsaufruf, so this.foo würde ausgedruckt werden, das ist in Ordnung, aber meine Frage ist, in diesem Fall wie bekomme ich auch Zugriff auf den Ausführungskontext für .on ('ändern' ...) ??? Bedeutung, wie kann ich auf die "diese" zugreifen, auf die ich ursprünglich vor dem Binden zugegriffen hatte?
Danke
http://stackoverflow.com/questions/80084/in-javascript-why-is-the-this-operator-inkonsistent – Snowmonkey