Middle
Реци о овоме у различитим контекстима: у методама објекта, у стрелачким функцијама и у обичним функцијама.
sobes.tech АИ
Одговор од АИ
U JavaScript-u, vrednost this zavisi od konteksta poziva funkcije:
- U metodama objekta
thisse odnosi na objekat kojem pripada metoda:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- U običnoj funkciji (koja nije metoda)
thiszavisi od režima i načina poziva:- U režimu stroge kontrole (
'use strict') —thisće bitiundefined. - U nestriktivnom režimu — biće globalni objekat (
windowu pretraživaču).
- U režimu stroge kontrole (
function foo() {
console.log(this);
}
foo(); // window ili undefined u režimu stroge kontrole
- U streličastim funkcijama
thisse leksikalno nasleđuje iz spoljnog konteksta, tj. iz oblasti gde je funkcija deklarisana, a ne iz mesta gde je pozvana:
const obj = {
name: 'Bob',
arrowFunc: () => {
console.log(this.name);
},
regularFunc() {
const arrow = () => {
console.log(this.name);
};
arrow();
}
};
obj.arrowFunc(); // undefined ili ime iz spoljnog konteksta
obj.regularFunc(); // Bob
Zbog toga su streličaste funkcije korisne za očuvanje this konteksta iz spoljne funkcije, dok obične funkcije i metode imaju sopstvenu vrednost this u zavisnosti od načina poziva.