'Why is the call() function not working with an object created with an already created class
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?
Solution 1:[1]
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);
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Mike D Sutton |
