O que é 'this'? Referenciando o próprio objeto
Desvende o mistério da palavra-chave 'this' e como ela aponta para o objeto atual.
O this é uma palavra-chave do JavaScript que significa, de forma simples:
“este contexto aqui”
ou
“o objeto atual nesta chamada”
Pense no this como alguém dizendo “eu” dentro de uma conversa.
Quem é “eu” depende de quem está falando naquele momento.
Exemplo básico (método de objeto)
const pessoa = {
nome: "Marina",
apresentar() {
return `Oi, eu sou ${this.nome}`;
}
};
console.log(pessoa.apresentar()); // Oi, eu sou Marina
Aqui, this aponta para pessoa, então this.nome é "Marina".
Regra importante: this depende de como a função é chamada
Não é onde a função foi escrita que manda.
O que manda é a forma da chamada.
1) Em método de objeto
const carro = {
modelo: "Fusca",
mostrar() {
console.log(this.modelo);
}
};
carro.mostrar(); // Fusca
this aponta para carro.
2) Em função comum (fora de objeto)
function teste() {
console.log(this);
}
O valor de this varia conforme o modo de execução (strict mode, navegador etc.).
Para iniciantes: evite depender de this em função solta até dominar o contexto.
3) Em função seta (=>)
Função seta não cria seu próprio this.
Ela “herda” o this do lugar onde foi criada.
const usuario = {
nome: "Rafa",
falar() {
const interno = () => {
console.log(this.nome);
};
interno();
}
};
usuario.falar(); // Rafa
4) Em eventos do DOM (função normal)
Em manipuladores de evento com função normal, this costuma ser o elemento que recebeu o evento.
botao.addEventListener("click", function () {
console.log(this); // o próprio botão
});
call, apply e bind (ajustando o this manualmente)
Você pode escolher o contexto de this:
function saudacao() {
console.log(`Olá, ${this.nome}`);
}
const pessoa = { nome: "Lia" };
saudacao.call(pessoa); // Olá, Lia
saudacao.apply(pessoa); // Olá, Lia
const novaFuncao = saudacao.bind(pessoa);
novaFuncao(); // Olá, Lia
call: chama agora, passando argumentos separadosapply: chama agora, passando argumentos em arraybind: cria nova função comthisfixo
Erros comuns com this
- Achar que
thisé sempre o objeto onde a função foi escrita. - Usar função comum dentro de método e perder contexto sem perceber.
- Confundir comportamento de função normal com função seta.
Boas práticas
- Em métodos de objeto, use
thispara acessar propriedades do próprio objeto. - Prefira nomes claros de métodos.
- Quando houver perda de contexto, considere
bindou função seta (com critério). - Teste com
console.log(this)para confirmar o contexto real.
Resumo da lição
thisrepresenta o contexto atual da execução.- Em métodos, geralmente aponta para o objeto que chamou o método.
- Em função seta,
thisé herdado do contexto externo. - Entender
thisevita muitos bugs em POO e eventos.