_proto_ & prototype

prototype: 函数的固有属性,是一个对象,对象中有一个固定属性constructor指向该函数

prototype.png

__proto__: Object的固有属性,故所有对象均具有该属性,指向创建该对象的函数的prototype

proto.png

函数也是对象,那么问题来了,Object/Function/Array/String/Number/Boolean/Date/RegExp/Error的__proto__指向什么呢?

由于函数是通过new Function()创建的,那么结果就应该是Function.prototype

内置对象的__proto__.png

Function/Array/String/Number/Boolean/Date/RegExp/Error的prototype也是个对象,那么它们的__proto__指向什么呢?

对象是通过new Object()创建的,那么答案应该是Object.prototype

内置对象原型的__proto__.png

Object.prototype.__proto__呢?

这是个特例,指向null

Object原型的__proto__.png

最后说一下instanceof机制
x instanceof y;

沿着x的__proto__找是否与y沿着prototype一致,若一致返回true,反之为false

Function instanceof Function;    // true
Function instanceof Object;      // true

以上表达式等价于下图表达式


instanceof.png

最后献上一张神图


_proto_&prototype.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容