Home > OS >  Why is the call() function not working with an object created with an already created class
Why is the call() function not working with an object created with an already created class

Time:03-18

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);

  • Related