Middle
Vorbește despre acest lucru în diferite contexte: în metodele obiectelor, în funcțiile săgeată și în funcțiile normale.
sobes.tech AI
Răspuns de la AI
În JavaScript, valoarea lui this depinde de contextul de apelare al funcției:
- În metodele obiectului
thisface referire la obiectul căruia îi aparține metoda:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- Într-o funcție obișnuită (care nu este metodă)
thisdepinde de modul și de modul în care este apelată:- În modul strict (
'use strict') —thisva fiundefined. - În modul non-strict — va fi obiectul global (
windowîn browsere).
- În modul strict (
function foo() {
console.log(this);
}
foo(); // window sau undefined în strict mode
- În funcțiile săgeată
thiseste moștenit lexical din contextul exterior, adică preluat din domeniul în care a fost declarată funcția, nu din cel în care este apelată:
const obj = {
name: 'Bob',
arrowFunc: () => {
console.log(this.name);
},
regularFunc() {
const arrow = () => {
console.log(this.name);
};
arrow();
}
};
obj.arrowFunc(); // undefined sau numele din contextul exterior
obj.regularFunc(); // Bob
Prin urmare, funcțiile săgeată sunt utile pentru păstrarea contextului this din funcția externă, în timp ce funcțiile normale și metodele au valoarea lor proprie de this, în funcție de modul în care sunt apelate.