W językach programowania słowo kluczowe this wskazuje przeważnie w metodzie na obiekt, w którym jest metoda.
W związku z dynamicznym charakterem JS, fraza this przybiera wartości w zależności od kontekstu w jakim metoda jest wykonana i może być zarówno bardzo pomocne jak i przyprawić o nielichy ból głowy.
W pierwszej części “Tu Haczyk IStnieje” omówie jak zapanować nad this przy użyciu metody bind ulubionego frameworka.
Rozpatrzmy następujący obiekt Car1 z atrybutem color i metodą check zwracającą wartość color:
var Car1 = {
color: "Red",
check: function() {
//console.info(this) - wyświetla wartość w konsoli Firebuga w Firefoxie
alert( "Car color is " + this.color );
}
};
Przypadek 1.
Wywołanie metody check działa tak jak byśmy się spodziewali zwracając Red.
// console.info -> Object color=Red // alert -> Car color is Red Car1.check();
Przypadek 2.
W drugim przypadku możemy być już trochę zaskoczeni, ale w metodzie check – this będzie już wskazywać na Car2, a nie na Car1 i zwróci Blue.
var Car2 = {
color: "Blue",
check: Car1.check
};
//Object color=Blue
//Car color is Blue
Car2.check();

