构造函数 - 原型循环引用JavaScript

时间:2015-03-18 07:09:07

标签: javascript constructor prototype

我在一个关于函数对象的constructor属性的博客上发现了这一行:

  

函数Object的prototype属性具有设置为函数本身的构造函数属性

含义,以下函数对象

function Student(name,age) {
    this.name = name;
    this.age = age;
}

将拥有以下原型

{constructor : Student}



    function Student() {
    }

    console.log(Student.prototype);
    console.log(Student.prototype.constructor);
    console.log(Student.prototype.constructor.prototype);
    console.log(Student.prototype.constructor.prototype.constructor);
    console.log(Student.prototype.constructor.prototype.constructor.prototype);




这意味着原型具有constructor属性,该属性设置为具有相同原型对象的函数本身。这有什么原因,或者它只是一种语言功能。我在这里找不到任何循环引用的理由。

任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

prototype.constructor属性设置为引用构造函数,以便该构造函数实例化的对象可以检查用于创建它们的构造函数。

答案 1 :(得分:0)

是的,这只是一种语言功能。一个非常有用的:

  • 使用.prototype创建新实例时,构造函数的new引用用于设置继承
  • 原型上的.constructor引用可用于从实例访问“类”,例如创建克隆,重新初始化实例,访问类名,或仅用于检查值。