Junior
O que é a palavra-chave 'this'?
sobes.tech IA
Resposta da IA
this é uma palavra-chave em JavaScript que se refere ao objeto no contexto em que o código atual é executado. O seu valor é determinado pela forma como a função é chamada.
As principais formas de definir this:
- Contexto global: Fora de uma função,
thisrefere-se ao objeto global (windowno navegador,globalno Node.js). - Chamada normal de uma função: Em modo não estrito (
strict mode),thistambém refere-se ao objeto global (ouundefinedse a função for chamada como método de um objeto, mas esse objeto fornullouundefined). Em modo estrito,thisé igual aundefined. - Método de um objeto: Se a função for chamada como método de um objeto (ou seja, através do operador ponto
.),thisrefere-se ao objeto que possui o método. - Construtor: Ao usar o operador
new,thisrefere-se à nova instância do objeto criada. - Métodos
call(),apply(),bind(): Estes métodos permitem definir explicitamente o valor dethisao chamar a função.bind()devolve uma nova função comthisligado, enquanto quecall()eapply()chamam a função com othisespecificado. - Funções arrow: As funções arrow não têm o seu próprio
this.thisnuma função arrow é herdado lexicalmente do âmbito circundante em que foi definida.
Exemplos:
// Contexto global
console.log(this === window); // true (no navegador)
// Chamada normal de uma função
function myFunction() {
console.log(this);
}
myFunction(); // window (em modo não estrito)
// Método de um objeto
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Construtor
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // objeto instância
// 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
// Função arrow
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (se definida no contexto global)
Compreender como this é determinado em diferentes contextos é fundamental para escrever código JavaScript correto.