Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Can you please tell me the reason and how I can fix it?

>Solution :

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);
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading