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()
.