可能重复:
What it the significance of the Javascript constructor property?
在developer.mozilla.org的Javascript docs中,关于继承的主题,有一个例子
// inherit Person
Student.prototype = new Person();
// correct the constructor pointer because it points to Person
Student.prototype.constructor = Student;
我想知道为什么要在这里更新原型的构造函数属性?
答案 0 :(得分:2)
每个函数都有prototype
属性(即使你没有定义它),prototype
对象只有属性constructor
(指向一个函数)本身)。因此,Student.prototype = new Person();
constructor
prototype
属性指向Person
函数后,您需要重置它。
你不应该认为prototype.constructor
是神奇的东西,它只是一个指向函数的指针。即使您跳过行Student.prototype.constructor = Student;
,行new Student();
也会正常工作。
constructor
属性很有用,例如在以下情况下(当您需要克隆对象但不确切知道创建它的函数时):
var st = new Student();
...
var st2 = st.constructor();
所以最好确保prototype.constructor()
是正确的。