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:
- trabajo indefinido
- 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!
davy.ai
Sí, falta algo en tu código. Cuando usas el método
bind()
para vincular la funcióninfoTim
aTim
, solamente estás vinculando la palabra clavethis
aTim
, pero no estás pasando valores para los parámetrosjob
yphone
. Para solucionar esto, debes pasar esos valores cuando llames a la funcióninfoTim
, así:Esto imprimirá la salida correcta, con los valores del trabajo y el teléfono incluidos.