O que é o contexto em JavaScript?
sobes.tech IA
Resposta da IA
O contexto (this) em JavaScript é uma referência ao objeto no qual a função atual está a ser executada. O seu valor é determinado pela forma como a função foi chamada, não pelo local onde foi definida.
Formas principais de definir o contexto:
-
Contexto global: Fora de funções, em modo não estrito,
thisrefere-se ao objeto global (windowno navegador,globalno Node.js). Em modo estrito,thiséundefined.// Modo não estrito (no navegador) console.log(this === window); // true // Modo estrito "use strict"; console.log(this === undefined); // true -
Método de um objeto: Se uma função é chamada como método de um objeto (
obj.method()),thisdentro da função refere-se a esse objeto (obj).const user = { name: "John", greet: function() { console.log("Hello, " + this.name); } }; user.greet(); // Output: Hello, John (this refere-se a user) -
Chamada de função (
call,apply,bind) : Os métodoscalleapplychamam a função com um contexto explicitamente especificado.bindcria uma nova função com um contexto fixo.function sayName(greeting) { console.log(greeting + ", " + this.name); } const person = { name: "Peter" }; sayName.call(person, "Hi"); // Output: Hi, Peter (this = person) sayName.apply(person, ["Hello"]); // Output: Hello, Peter (this = person) const boundSayName = sayName.bind(person, "Hey"); boundSayName(); // Output: Hey, Peter (this = person) -
Construtor (
new) : Ao chamar uma função com o operadornew, um novo objeto vazio é criado, ethisdentro da função construtora refere-se a esse novo objeto.function Person(name) { this.name = name; } const john = new Person("John"); console.log(john.name); // Output: John (this dentro de Person refere-se a john) -
Funções arrow: As funções arrow não têm o seu próprio contexto.
thisdentro de uma função arrow é herdado do contexto externo (lexical) onde a função foi criada.const user = { name: "Alice", greet: function() { const innerGreet = () => { console.log("Hello, " + this.name); // this é herdado de greet (refere-se a user) }; innerGreet(); } }; user.greet(); // Output: Hello, Alice
Compreender como this é definido é fundamental para trabalhar corretamente com objetos, métodos e manipuladores de eventos em JavaScript.