I am a javaScript beginner. I was trying to run a call function to an object which I created using a class. I expected an output - "Virat Kohli" with the following code :
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))
But this returned me undefined undefined
in my VS code console, but when I replaced it and created the object like this :
const vk = {
firstName : "Virat",
lastName : "Kohli"
}
It returned the expected output.
Can you please tell me the reason and how I can fix it?
CodePudding user response:
The variable assignments in the constructor are back-to-front, they should assign the input values to the member variables.
Your fullName
function can be moved into the class as a read only property getter:
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);