Because you should not use __super__ in your code at all.
This is a compiler artifact, every use of the macro super / keyword / whatever it will be compiled into
ClassName.__super__.methodName.call(this, …) // or ClassName.__super__.methodName.apply(this, …) // or, in static class functions even ClassName.__super___.constructor.functionName.call(this, …)
They do not trust the dynamic this binding that you proposed to use ( this.__super__ ), they rather went to the parent's static link. In fact, it would be nice not to use the property at all, but only the local variable super in its scope of the module.
In addition, this.__super__ will not work in the inherited method:
function A() { } A.prototype.method = function() { console.log("works") }; function B() { A.call(this); } B.prototype = Object.create(A.prototype); B.prototype.__super__ = A.prototype; B.prototype.method = function() { this.__super__.method.call(this); } function C() { B.call(this); } C.prototype = Object.create(B.prototype); C.prototype.__super__ = B.prototype; var b = new B(), c = new C(); b.method()
Stack overflow because you did not receive the .__super__ you were expecting!
Bergi source share