Soy un principiante de JavaScript. Estaba tratando de ejecutar una función de llamada a un objeto que creé usando una clase. Esperaba una salida: "Virat Kohli" con el siguiente código:
class person { constructor(firstName,lastName){ firstName = this.firstName; lastName = this.lastName } } perFullName = { fullName : function(){ return this.firstName + " " + this.lastName; } } const vk = new person("Virat","Kohli"); console.log(perFullName.fullName.call(vk)) Pero esto me devolvió undefined undefined en mi consola de código VS, pero cuando lo reemplacé y creé el objeto así:
const vk = { firstName : "Virat", lastName : "Kohli" }Devolvió el resultado esperado.
¿Puedes decirme el motivo y cómo puedo solucionarlo?
Las asignaciones de variables en el constructor están al revés, deben asignar los valores de entrada a las variables miembro.
Su función fullName se puede mover a la clase como un captador de propiedades de solo lectura:
class person { constructor(firstName, lastName){ this.firstName = firstName; this.lastName = lastName } get fullName() { return this.firstName + " " + this.lastName; } } const vk = new person("Virat", "Kohli"); console.log(vk.fullName);