Middle
Pasakok apie tai skirtinguose kontekstuose: objektų metodose, rodyklės funkcijose ir įprastose funkcijose.
sobes.tech AI
Atsakymas iš AI
JavaScript'e this reikšmė priklauso nuo funkcijos kvietimo konteksto:
- Objekto metoduose
thisnurodo į objektą, kuriam priklauso metodas:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- Įprastoje funkcijoje (ne kaip metodas)
thispriklauso nuo režimo ir kvietimo būdo:- Griežtame režime (
'use strict') —thisbusundefined. - Neregišame režime — globaliam objektui (
windownaršyklėje).
- Griežtame režime (
function foo() {
console.log(this);
}
foo(); // window arba `undefined` griežtame režime
- Rodyklės funkcijose
thisleksiškai paveldima iš išorinio konteksto, t.y., iš srities, kurioje funkcija buvo deklaruota, o ne iš vietos, kurioje ji kviečiama:
const obj = {
name: 'Bob',
arrowFunc: () => {
console.log(this.name);
},
regularFunc() {
const arrow = () => {
console.log(this.name);
};
arrow();
}
};
obj.arrowFunc(); // undefined arba išorinio konteksto vardas
obj.regularFunc(); // Bob
Todėl rodyklės funkcijos yra naudingos išlaikyti this kontekstą iš išorinės funkcijos, o įprastos funkcijos ir metodai turi savo this reikšmę priklausomai nuo kvietimo būdo.