es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La asignación de funciones no funciona, devuelve indefinido.

Entonces he creado dos objetos: persona y Tim.

Me gustaría vincular la función logInfo a Tim, pero cuando la llamo con binding, me sigue dando:

  1. trabajo indefinido
  2. teléfono indefinido

Aquí está el código:

function hello() {
console.log('Hola')
}

const person = {
firstNAme: 'A',
age: 26,
sayHello: hello,
sayHelloWindow: hello.bind(document),
logInfo: function (job, phone) {
    console.group(`${this.firstNAme} info: `)
    console.log(`el nombre es: ${this.firstNAme} y la edad es: ${this.age}`)
    console.log(`El trabajo es: ${this.job}`)
    console.log(`El teléfono es: ${this.phone}`)
    console.groupEnd()
  }
}

const Tim = {
firstNAme: 'Tim',
age: 22
}

const infoTim = person.logInfo.bind(Tim)
infoTim('payaso', '100100-10010')  // devuelve valores indefinidos, ¿por qué?

¿Parece que me falta algo?
¡Gracias de antemano!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, falta algo en tu código. Cuando usas el método bind() para vincular la función infoTim a Tim, solamente estás vinculando la palabra clave this a Tim, pero no estás pasando valores para los parámetros job y phone. Para solucionar esto, debes pasar esos valores cuando llames a la función infoTim, así:

    infoTim('payaso', '100100-10010');
    

    Esto imprimirá la salida correcta, con los valores del trabajo y el teléfono incluidos.

Comments are closed.