In JavaScript Prototype inheritance, what is the goal of adding prototype.constructor property. Let me explain with an example.
var Super = function() { this.superProperty = 'Super Property' } var Sub = function() { this.subProperty = 'Sub Property' } Sub.prototype = new Super(); Sub.prototype.constructor = Sub; // advantages of the statement var inst = new Sub();
The following lines return always true in all case, when adding Sub.prototype.constructor = Sub or not.
console.log(inst instanceof Sub) // true console.log(inst instanceof Super) // true
I guess, it may be useful when getting new instances but when and/or how?
Thanks in advance.
In JavaScript Prototype inheritance, what is the goal of adding prototype.constructor property. Let me explain with an example.
var Super = function() { this.superProperty = 'Super Property' } var Sub = function() { this.subProperty = 'Sub Property' } Sub.prototype = new Super(); Sub.prototype.constructor = Sub; // advantages of the statement var inst = new Sub();
The following lines return always true in all case, when adding Sub.prototype.constructor = Sub or not.
console.log(inst instanceof Sub) // true console.log(inst instanceof Super) // true
I guess, it may be useful when getting new instances but when and/or how?
Thanks in advance.
Share Improve this question edited Feb 9, 2011 at 11:45 Fatih Acet asked Feb 9, 2011 at 11:31 Fatih AcetFatih Acet 29.6k9 gold badges53 silver badges58 bronze badges 1- See also Why is it necessary to set the prototype constructor? – Bergi Commented Jun 16, 2022 at 23:50
1 Answer
Reset to default 10It's just to properly reset the constructor
property to accurately reflect the function used to construct the object.
Sub.prototype = new Super();
console.log(new Sub().constructor == Sub);
// -> 'false'
Sub.prototype.constructor = Sub;
console.log(new Sub().constructor == Sub);
// -> 'true'