Why don't we need parenthesis for getters?

Please could someone explain why the end of this lesson the answer is:

console.log(robot.energyLevel)

and not

console.log(robot.energyLevel())

and when to know when to put the brackets in please?

Hi, I am just learning about getters and setters myself and without seeing your code I can’t be sure,
but I believe that when calling getter and setter methods, the function is called without ().

3 Likes

This makes sense actually I think they did mention that somewhere and I forgot! Thank you for your help

get attribute () {
    return this._attribute;
}

We write a get call the way we would access an object property, normally.

console.log(object.attribute);

We know there is no literal attribute by that name, but a backing variable with an underscore, which value is returned by the getter. We never invoke the getter method as we would a typical method, since it is self-invoking and accesses the actual attribute and returns it.

Likewise, we never invoke a setter, but call it like we would be making an assignment.

object.attribute = newValue;

The mechanics behind the scene are such that we cannot access (get) a variable while it is being set. It’s a bit complicated to fully understand, let alone explain, but warrants further study as you get more immersed in the finer details. Add this to your reading list.