不太会表达 比如说:
function Person(){
}
为什么Person 的原型prototype中的构造器要指向 Person() 不太懂 网上也没搜到什么答案。。。。
不太会表达 比如说:
function Person(){
}
为什么Person 的原型prototype中的构造器要指向 Person() 不太懂 网上也没搜到什么答案。。。。
function Person () {}
Person.prototype.constructor === Person // true
你可以把 Person 理解成构造器函数,它是一个构造器,当然指向它自己了。
你每创建一个对象,js 引擎会自动初始化一个 .prototype.constructor
指向这个对象,方法属于对象,所以每创建一个方法也会有一个constructor
.规范里面是这么规定的.
至于规范为什么这么规定,当然是因为我们需要用到他了.
在 es5 中,都只是通过模拟实现面向对象,其中的一个关键就是原型链,而原型链的链接就是通过constructor
起作用的.而在 es6 中的 class 其实就是个语法糖,底层用的还是 es5 的那一套,只是让我们用起来更方便,更好理解了.
每创建一个函数,就会同时创建它的prototype对象,这个对象也会自动获得constructor属性。
所以Person.prototype.constructor本身就是指向Person,之所以需要你手动指定是因为你把原来的constructor覆盖重写了
10 回答11.6k 阅读
2 回答3.1k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决