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

165
Visualizações
JavaScript .bind mehtod no capta un contexto

En el método sendTo del usuario, traté de vincular la función definida anteriormente y enviar this.name como primer argumento. Pero si intento iniciar sesión en la consola, this.name devuelve undefind. ¿Cómo vincular correctamente el contexto del objeto del usuario al método sendTo ()?

 function sendFrom(from, to, text) { console.log(this); return `${from}'s packet --> ${to} \nmessage: ${text}`; } let user = { name: "Alex", sendTo: sendFrom.bind(this, this.name), } user.sendTo = user.sendTo.bind(user); console.log(user.sendTo("John", "some message"));
 {} undefined's packet --> John message: some message
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Supongo que puede lograr el comportamiento esperado al no usar ningún enlace:

 function sendFrom(to, text) { console.log(this); return `${this.name}'s packet --> ${to} \nmessage: ${text}`; } let user = { name: "Alex", sendTo: sendFrom } console.log(user.sendTo("John", "some message"));

Pero si desea ejecutar el método del usuario en otro lugar que cuando entra en juego el enlace:

 let alexeSendTo = user.sendTo alexesSendTo('John', 'Hey John!') // it will loose Alex's user context link let alexeSendTo = user.sendTo.bind(user) alexesSendTo('John', 'Hey John!') // now it is marked as Alex message
about 4 years ago · Juan Pablo Isaza Relatório

0

Para entender por qué esto no funciona, debe mirar el objeto de user :

sendTo: sendFrom.bind(this, this.name),

Esta propiedad dentro del user es lo que está causando el problema. Cuando se ejecuta this código, pertenece al objeto de la ventana y no al usuario.

Así que finalmente sendTo es un método con contexto como window y primer parámetro como window.name

Es por eso que console.log(this) devuelve el objeto de ventana.

Cuando haga esto: console.log(user.sendTo("John", "some message"));

Está agregando los parámetros "John" y "some message" después del parámetro ya agregado.

Entonces, finalmente, los parámetros se convierten en:

from, to, text -> window.name (indefinido en su caso), John, algún mensaje

Cada vez que usa this en este código, se refiere a la ventana. En realidad, no hay forma de entender la vinculación aquí y este ejemplo no es donde debería usar bind

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