关于JS的原型链?
Function.prototype.__proto__ === Object.prototype
//true
Function.prototype.constructor === Object
//false
如果上面第一行代码是正确的,第二行应该也对啊?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
1. 看到这道题,也让我自己又加深了一些理解,我先说一下楼主想问的是什么
因为第一句话成立,所以楼主把Function.prototype理解成了一个Object实例,因为如果Function.prototype是一个Object实例的话,第二句话也就会是true了,证明如下
原因也正在这里,因为Function.prototype并不是Object构造函数通过new出来的实例,Function.prototype的构造函数是Function,说明如下
所以Function.prototype.constructor为Function。
2.我认为这个问题还是从概念上来理解是最好的
因为Function继承Object, 所以Function.prototype其实是应该等于一个Object的实例的,这就是继承实现的方式,而Object的实例有一个内部的[[prototype]]属性,在一些浏览器的实现中可以通过__proto__来访问到,指向Object.prototype,既然让Function.prototype等于一个Object的实例,Object实例的__proto__指向Object.prototype,所有Function.prototype.__proto__指向Object.prototype,用代码解释如下:
对于Function.prototype.constructor的理解,从概念上很好理解,在Function这个构造函数创建的时候,内部就会初始化一个prototype属性,而同时也包含一个constructor属性,指向构造函数本身
所以
我的能力也有限,希望能帮到你,如果有问题,也请大家多多指正
Function.prototype.constructor === Function
//true
推荐看看这篇文章:最详尽的 JS 原型与原型链终极详解,没有「可能是」。(三)
你是怎么理解原型链的?第二行为什么返回true?
====
对象的 prototype 是一个普通对象,所以
对象的 constructor 属性指向其构造器
看这个图,提醒一下:prototype是函数才有的属性,__proto__是浏览器实现的 所有对象都有一个
[[prototype]]
的私有属性 的这个[[prototype]]
构造器和原型不要搞混了

1.对象有属性__proto__,指向该对象的构造函数的原型对象。
2.方法除了有属性__proto__,还有属性prototype,prototype指向该方法的原型对象。