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

194
Visualizações
¿Por qué setTimeout no funciona al pasar el método del objeto?

Leí muchos temas (aquí y en otros lugares) sobre setTimeout y this enlace. De todos modos, hay algo que necesito entender mejor. Comienzo con el siguiente ejemplo.

 let myObj = { p: 'my property', m() { console.log(this.p); } } setTimeout(myObj.m, 100); // undefined setTimeout(function() {myObj.m()}, 100); // 'my property'

Lo que leí de DOC es

El código ejecutado por setTimeout() se llama desde un contexto de ejecución separado de la función desde la que se llamó a setTimeout. Se aplican las reglas habituales para establecer la palabra clave this para la función llamada, y si no ha establecido esto en la llamada o con bind, se establecerá de forma predeterminada en el objeto de ventana (o global). No será lo mismo que este valor para la función que llamó setTimeout.

Y una forma de arreglar usando el contenedor de funciones.

Una forma común de resolver el problema es usar una función contenedora que establezca esto en el valor requerido.

como hice en la última declaración del fragmento.

Mi duda: ¿por qué pasar un método por obj a setTimeout sin envolverlo no funciona? Pasar object.method debería establecer this en el objeto de todos modos. Pero tal vez la invocación directa de setTimeout lo anula, forzando a this sea window .

Pensé que tal vez el uso de una función contenedora crea un nuevo alcance subyacente que puede hacer referencia a myObj por cierre y, posteriormente, llamar a setTimeout(myObj.m(), 100) establece el derecho this .

Gracias de antemano

about 4 years ago · Juan Pablo Isaza
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