Overriding inherited prototype method and calling the original one inside the new one

inheritance, javascript, overriding, prototype

Solution

You could use `Object.getPrototypeOf`

...
B.prototype.log = function () {
    Object.getPrototypeOf (B.prototype).log.call(this)
    console.log("B");
};
...
b.log(); //A B

Note: Object.getPrototypeOf is ECMASript 5, see the compatibility

There is also the non standard and deprecated `__proto__` property (compatibility) which

references the same object as its internal [[Prototype]]

and would allow you to call your `A`s' log method like this

`B.prototype.__proto__.log.call(this)`

But

the preferred method is to use Object.getPrototypeOf.

Problem

In the following piece of code, how can I access the `A.prototype.log` inside of `B.prototype.log`? ``` function A() {} A.prototype.log = function () { console.log("A"); }; function B() {} B.prototype = Object.create(A.prototype); B.prototype.constructor = B; B.prototype.log = function () { //call A.prototype.log here console.log("B"); }; var b = new B(); b.log(); ``` I know I could just write `A.prototype.log.call(this)` but I thought maybe there is a more elegant way, that lets me call it in a relative way, like "call the method 'log' of the next higher instance in the prototype chain". Is something like this possible?

Original source