W JavaScripcie, podobnie jak w większości języków programowania obiektowego, this jest specjalnym słowem kluczowym wykorzystywanym w metodach w celu odwołania się do obiektu, na którym dana metoda jest wywoływana. Wartość this określana jest w kilku prostych krokach:
- Jeśli funkcja zostaje wywołana metodą
Funkcja.calllubFunkcja.apply,thisprzyjmie wartość pierwszego argumentu przekazanego do metodycall/apply. Jeśli pierwszy argument przekazany do metodycall/applyma wartośćnulllubundefined,thisbędzie odnosić się do obiektu globalnego (w przeglądarkach internetowych jest to obiektwindow). - Jeśli wywoływana funkcja została utworzona przy pomocy metody
Funkcja.bind,thisprzyjmie wartość pierwszego argumentu, który został przekazany do metodybindw czasie tworzenia funkcji. - Jeśli funkcja jest wywoływana jako metoda obiektu,
thisodwołuje się do tego obiektu. - W pozostałych przypadkach wywoływana jest samodzielna funkcja, niepowiązana z żadnym obiektem — wówczas
thisodwołuje się do obiektu globalnego.
Przykład 2.41. Funkcja wywołana przy użyciu metody Funkcja.call
var mojObiekt = {
przywitajSie : function() {
console.log('Cześć! Mam na imię ' + this.mojeImie);
},
mojeImie : 'Rebecca'
};
var drugiObiekt = {
mojeImie : 'Colin'
};
mojObiekt.przywitajSie(); // rejestruje Cześć! Mam na imię Rebecca
mojObiekt.przywitajSie.call(drugiObiekt); // rejestruje Cześć! Mam na imię Colin
Przykład 2.42: Funkcja utworzona przy pomocy metody Function.bind
var mojeImie = 'obiekt globalny',
przywitajSie = function () {
console.log('Cześć! Mam na imię ' + this.mojeImie);
},
mojObiekt = {
mojeImie : 'Rebecca'
};
var mojObiektCzesc = przywitajSie.bind(mojObiekt);
przywitajSie(); // rejestruje Cześć! Mam na imię obiekt globalny
mójObiektCześć(); // rejestruje Cześć! Mam na imię Rebecca
Przykład 2.43: Funkcja wiązana z obiektem w czasie działania programu
var mojeImie = 'obiekt globalny',
przywitajSie = function () {
console.log('Czesc! Mam na imie ' + this.mojeImie);
},
mojObiekt = {
mojeImie : 'Rebecca'
},
drugiObiekt = {
mojeImie : 'Colin'
};
mojObiekt.przywitajSie = przywitajSie;
drugiObiekt.przywitajSie = przywitajSie;
przywitajSie(); // rejestruje Cześć! Mam na imię obiekt globalny
mójObiekt.przywitajSie(); // rejestruje Cześć! Mam na imię Rebecca
drugiObiekt.przywitajSie(); // rejestruje Cześć! Mam na imię Colin






Wysyłam...
1 komentarz
lutek
04.29.2014
var obj = mojaPrzestrzenNazw.mojObiekt;
obj.przywitajSie(); // rejestruje Cześć! Mam na imię Rebecca
chyba tak to powinno wyglądać
Nie ma trackbacków do wyświetlenia