Junior
Ce este cuvântul cheie 'this'?
sobes.tech AI
Răspuns de la AI
this este un cuvânt cheie în JavaScript care face referire la obiectul în contextul în care este executat codul curent. Valoarea sa este determinată de modul în care este apelată funcția.
Principalele moduri de a defini this:
- Context global: În afara unei funcții,
thisface referire la obiectul global (windowîn browser,globalîn Node.js). - Apel obișnuit al funcției: În modul non-strict (
strict mode),thisface referire și el la obiectul global (sauundefineddacă funcția este apelată ca metodă a unui obiect, dar acel obiect estenullsauundefined). În modul strict,thiseste egal cuundefined. - Metoda obiectului: Dacă funcția este apelată ca metodă a unui obiect (adică, prin operatorul punct
.),thisface referire la obiectul care deține metoda. - Constructor: La utilizarea operatorului
new,thisface referire la noua instanță a obiectului creată. - Metodele
call(),apply(),bind(): Aceste metode permit stabilirea explicită a valorii luithisla apelarea funcției.bind()returnează o funcție nouă cuthislegat, în timp cecall()șiapply()apelează funcția cuthisspecificat. - Funcții săgeată: Funcțiile săgeată nu au propriul
this.thisîntr-o funcție săgeată este moștenit lexical din mediul înconjurător în care a fost definită.
Exemple:
// Context global
console.log(this === window); // true (în browser)
// Apel normal al funcției
function myFunction() {
console.log(this);
}
myFunction(); // window (în modul non-strict)
// Metodă a obiectului
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Constructor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // obiect instanță
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Funcție săgeată
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (dacă este definit în contextul global)
Înțelegerea modului în care this este determinat în diferite contexte este esențială pentru scrierea unui cod JavaScript corect.