什么时候需要在Javascript中设置类的'prototype.constructor'属性?

时间:2013-01-10 09:10:11

标签: javascript prototypal-inheritance

  

可能重复:
  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;

我想知道为什么要在这里更新原型的构造函数属性?

1 个答案:

答案 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()是正确的。