O que é o this em JavaScript?
sobes.tech IA
Resposta da IA
O this em JavaScript é uma palavra-chave que indica o contexto de execução de uma função. O seu valor é determinado pela forma como a função é chamada.
Normalmente, this aponta para o objeto global (no navegador, window) numa chamada de função normal, exceto em modo estrito.
Em modo estrito ('use strict'), no mesmo cenário, this será undefined.
Ao chamar um método de um objeto, this refere-se ao próprio objeto.
const obj = {
method: function() {
console.log(this); // obj
}
};
obj.method();
Ao usar um construtor (new com uma função), this aponta para a nova instância criada.
function Constructor() {
console.log(this); // instância de Constructor
}
const instance = new Constructor();
Ao usar métodos como call, apply, bind, this é definido explicitamente como o primeiro argumento.
function greet() {
console.log(`Olá, ${this.name}!`);
}
const person = { name: 'Alice' };
greet.call(person); // Olá, Alice!
greet.apply(person); // Olá, Alice!
const boundGreet = greet.bind(person);
boundGreet(); // Olá, Alice!
Em funções de seta, this não tem seu próprio contexto. É herdado lexicamente do escopo onde a função de seta foi definida.
const obj2 = {
name: 'Bob',
greet: function() {
const arrowGreet = () => {
console.log(`Olá de ${this.name}!`); // this refere-se a obj2
};
arrowGreet();
}
};
obj2.greet(); // Olá de Bob!
const obj3 = {
name: 'Charlie',
greet: () => {
console.log(`Olá de ${this.name}!`); // this refere-se a window (ou undefined em modo estrito), não a obj3
}
};
obj3.greet(); // Olá de undefined! (ou erro)
O contexto this pode não ser óbvio, especialmente ao passar callbacks ou operações assíncronas. Compreender as regras de this é fundamental para o funcionamento correto do JavaScript.