JS原型构造器器指向构造函数

不太会表达 比如说:

function Person(){

}

为什么Person 的原型prototype中的构造器要指向 Person() 不太懂 网上也没搜到什么答案。。。。

阅读 2.1k
4 个回答
function Person () {}
Person.prototype.constructor === Person // true

你可以把 Person 理解成构造器函数,它是一个构造器,当然指向它自己了。

你每创建一个对象,js 引擎会自动初始化一个 .prototype.constructor指向这个对象,方法属于对象,所以每创建一个方法也会有一个constructor.规范里面是这么规定的.
至于规范为什么这么规定,当然是因为我们需要用到他了.
在 es5 中,都只是通过模拟实现面向对象,其中的一个关键就是原型链,而原型链的链接就是通过constructor起作用的.而在 es6 中的 class 其实就是个语法糖,底层用的还是 es5 的那一套,只是让我们用起来更方便,更好理解了.

参考

每创建一个函数,就会同时创建它的prototype对象,这个对象也会自动获得constructor属性。
所以Person.prototype.constructor本身就是指向Person,之所以需要你手动指定是因为你把原来的constructor覆盖重写了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题