我写了一个关于函数对象的constructor
属性的博客,并浏览了这一行:
函数对象的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);
这意味着prototype具有constructor
属性,该属性被设置为具有相同原型对象的函数本身。这是有原因的,还是只是一个语言特性。我找不到任何理由在这里进行循环引用。
任何帮助都很感激。谢谢。
发布于 2017-12-25 12:38:30
prototype.constructor
属性被设置为引用构造函数,以便由该构造函数实例化的对象可以检查使用了哪个构造函数来创建它们。
发布于 2017-12-25 12:53:55
是的,这只是一个语言特性。还有一个非常有用的:
.prototype
引用用于使用new
创建新实例时设置继承。.constructor
引用可以用于访问实例中的“类”,例如创建一个克隆、重新初始化实例、访问类名或仅仅用于检查值。https://stackoverflow.com/questions/29116041
复制