Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

155
Vistas
no se puede vincular a la nueva función constructora

el siguiente código arrojará un error de tipo para la propiedad de nombre: No se puede asignar a la propiedad de solo lectura 'nombre' de la función.
Espero obtener el nombre de usuario 'Desconocido'. Obtengo este resultado si uso un enlace como:

 const User = function(name) { this.name = name } function userMsg(msg) { this.name = this.name || 'Unknown' return `${this.name} said: ${msg}` } const newMsg = userMsg.bind(User) newMsg('say smth')

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Su código actual está tratando de usar la función de constructor User como this dentro userMsg . Eso causa el problema de que está ejecutando userMsg en el contexto de una function . Las funciones tienen un name de propiedad de solo lectura que no puede sobrescribir, que proviene de Function.prototype.name .

Afortunadamente, eso no es lo que quieres hacer de todos modos. Si, en lugar de vincular la función User , vincula una instancia creada llamando a la función constructora, puede ceñirse al name de su propiedad:

 const User = function(name) { this.name = name } function userMsg(msg) { this.name = this.name || 'Unknown' return `${this.name} said: ${msg}` } const max = new User('Max'); // you need a User instance to bind to const newMsg = userMsg.bind(max); // bind it here console.log(newMsg('say smth'));

En el uso real, probablemente tampoco quiera usar bind , sino agregar userMsg a User.prototype :

 const User = function(name) { this.name = name } User.prototype.userMsg = function(msg) { return `${this.name} says: ${msg}` } const max = new User('Max'); const newMsg = max.userMsg('Hello!'); // now we can call the function on the user console.log(newMsg);

o al menos, no lo bind de forma permanente, sino que use call para usar el contexto de usuario una vez:

 const User = function(name) { this.name = name } function userMsg(msg) { this.name = this.name || 'Unknown' return `${this.name} said: ${msg}` } const max = new User('Max'); const newMsg = userMsg.call(max, 'say smth'); // use call to set context only for this call console.log(newMsg);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda