When you replace the prototype
object entirely, the original constructor
reference is removed with the original prototype
object and is instead inherited from the new A()
, etc.
function B() {}
console.log(B.prototype.constructor === B); // true
B.prototype = new A();
console.log(B.prototype.constructor === B); // false
console.log(B.prototype.constructor === A); // true
So, you'll have to reset the constructor
after setting the prototype
:
function A() {}
function B() {}
B.prototype = new A();
B.prototype.constructor = B;
function C() {}
C.prototype = new B();
C.prototype.constructor = C;