Skip to content
Advertisement

Main Getter for a Javascript class

So i want to create a class and add a getter to return something when getting the entire instance instead of a getter on one of the children.

example:

class Person {
  constructor(name){
    this.name = name
  }

  get () {
    return "My name is " + this.name;
  }
}

const Alexander = new Person("Alexander")

console.log(Alexander) // My name is Alexander

So the above is what i want to achieve, but i am unable to and struggling to find something online like this, unsure if it is possible or my wording is just incorrect.

Advertisement

Answer

The default toString() function of a class defines what should be printed if the class is converted to a string. You can override that function in the following way:

class Person {
  constructor(name){
    this.name = name;

    // override function here
    this.toString = function() {
      return "My name is " + this.name;
    }
  }
}

const Alexander = new Person("Alexander")
console.log("" + Alexander) // My name is Alexander

But it will only get printed if the object is converted to a string. For example by adding it to a string as in the example above (e.g. "" + object) or by doing String(object) or simply object.toString().

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement