始终搞不清的constructor是啥

发布于 2022-09-06 07:47:12 字数 60 浏览 37 评论 0

Function.constructor === Function

请教大神 这是啥意思

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

鹤仙姿 2022-09-13 07:47:12

可以看一下这篇文章,里面有详细的介绍:https://segmentfault.com/a/11...

重点在于,constructor是原型指向构造函数的一个属性,在构造函数中没有这样一个属性而去原型链中查找,所以是

Function.constructor === Function.prototyoe.constructor

要记住这一点,而不仅仅是

Function.constructor === Function
小姐丶请自重 2022-09-13 07:47:12

constructor 属性返回对创建此对象的数组函数的引用。

什么是引用呢 可以这么理解
js是基于对象的语言,在js里面一切皆对象,所有的变量实际上都是引用

所以声明函数 他的constructor也就是Function的一个函数引用
这里Funtion 是一个类,类似Array,String,Number,Object 等的原型
而funtion 都是继承了Funtion的属性 和它并不相等

所以是相等关系
理解了引用可能会更好理解吧 建议买本书系统的学习一下

携君以终年 2022-09-13 07:47:12

clipboard.png

可以简单理解成为谁构造了你,你的constructor就是谁,因为Function比较特殊,所以相当于是自己构造了自己

另类 2022-09-13 07:47:12

1、所有函数都是Function的实例(不考虑箭头函数),所以所有函数的[[prototype]]原型都指向Function.prototype
2、每一个prototype对象都有1个constructor属性指向构造它的函数
3、函数实例本身并没有constructor属性,便沿着原型链去寻找,直到发现Function.prototype内有constructor属性。
4、根据2,Function.prototype.constructor指向Function。
5、可能奇怪的点在于Function本身也是Function的实例,Function的[[prototype]]原型指向Function.prototype,设计者可能是为了保持函数特性一致而设计的,毕竟凡事必得有始有终嘛(跑。

眼睛会笑 2022-09-13 07:47:12

所有构造函数的原型的constructor属性都指向其构造函数,又所有构造函数都是Function这个构造函数的实例,包括Function自己,所以Function.constructor = Function.prototype.constructor = Function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文