I always thought that calling super() was practically like copy pasting the properties of the parent into the child class.
**Here super() is called to avoid duplicating the constructor parts' that are common between Rectangle and Square. ** MDN
I read on MDN that you need to extend a class and call super() to be able to. And also
The super keyword is used to access and call functions on an object's parent.
which I do not fully understand.
I tested those in this example:
class Logger extends Array {
    log() {
        let i = 0
        for (const el of this) {
            console.log(this[i], el)
            i++
        }
        return;
    }
}
a = new Logger(1, 2, 3)
a.log()
a.push(6)
But neither super() is needed for accessing this[i] or calling a.push() any hints folks?
 
    