Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

280
Visualizações
Cómo se mueve el contexto de ejecución que no sea el objeto de la ventana en la pila en Js

Entonces, la función this of depende de su contexto de ejecución (lugar donde se llama)

 function foo(){ console.log(this) // will print window } foo()

Y éste

 const obj={ fun:function(){ console.log(this) } } obj.fun(); //will print the obj

Estoy confundido sobre cómo se carga el obj del contexto de ejecución para llamar a la pila desde el montón

ingrese la descripción de la imagen aquí

¿O me estoy perdiendo algo aquí? .Por favor, ayúdame

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Ámbitos adjuntos

Olvidándome de this por un momento. El concepto de "contexto de ejecución" se llama Cierre en Javascript. El artículo de MDN lo explica bien.

Para tener una mejor idea, usemos una variable llamada a lugar de this :

 const a = 1; function foo() { //can access `a` here function bar() { //can also access `a` here } }

Estas funciones tienen acceso a los ámbitos externos donde fueron declaradas. Este es el "contexto de ejecución" , como lo llamaste, aunque esta es la terminología incorrecta para Javascript. "Ámbito" o "ámbito léxico" serían los términos correctos.

No importa dónde llame a esas funciones, aún podrán imprimir a archivo .

Pila de llamadas y montón

El artículo de MDN sobre Cierres dice lo siguiente:

Cadena de alcance de cierre
Todo cierre tiene tres alcances:

  • Ámbito Local (Ámbito propio)
  • Alcance de funciones externas
  • Alcance global

Lo que hay que tener en cuenta sobre estos es que se establecen en el momento del análisis , NO en el momento de la ejecución .

Si bien Javascript tiene una pila de llamadas y un montón, estos no tienen nada que ver con el alcance o los cierres. Los alcances son una propiedad de la función y siguen siendo los mismos desde el momento en que se analiza por primera vez Javascript hasta que el código termina de ejecutarse.

sobre this

this es una variable que depende completamente de cómo se inicializó y llamó la función. El artículo de MDN puede volver a resultar útil aquí.

Veamos nuevamente su función de ejemplo, con algunos comentarios y ejemplos en línea:

 function foo() { console.log(this); } // Sure, calling `foo()` right now will print `window` if you're in a browser foo(); //prints `window` in a browser // But any use of `new` keyword will change `this` (including classes) const obj = new Object(); obj.foo = foo; obj.foo(); //prints `{ foo: [Function: foo] }` // Similarly, assigning `foo` to a plain object will also change `this` const obj = {}; obj.foo = foo; obj.foo(); //prints `{ foo: [Function: foo] }` // Lastly, any of the `Function.prototype` methods `bind`, `apply`, `call` // intentionally change `this` // // `bind()` returns a new function: const boundFunction = foo.bind({"this is a property": "and a value, see!?"}); boundFunction(); //prints `{ 'this is a property': 'and a value, see!?' }` // //`apply()` and `call()` both execute the function // (the difference between the two is in how arguments are passed, // see the MDN articles on // [apply](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply#syntax) and on // [call](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call#syntax) for more details) foo.apply({bar:1}); //prints `{ bar: 1 }` foo.call({baz: 2}); //prints `{ baz: 2 }`
about 4 years ago · Juan Pablo Isaza Relatório

0

This en Javascript se comporta de manera diferente en el navegador y Node env. this en contexto global apunta a la ventana en el navegador y globalthis en Node. En este caso, 'Esto' apunta al objeto que llama, es decir, obj. cuando se llama a un fn js mira esto en su entorno léxico. También puede vincular este contexto con apply, bind, call.

 const obj = {name:'Irfan',fn:function(){console.log(this.name)}} // will print Irfan

Aquí esto apunta a obj, es decir, this=obj(this.name=obj.name), pero en la flecha fn esto no está vinculado de forma predeterminada.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda