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