深入探究构造函数、原型链

首先明确一下,原型链有尽头

Object.prototype.__proto__ === null

验证公式:

实例对象.__proto__ === 构造函数.prototype
//例子:
var obj = {}
obj.__proto__ === Object.prototype //true

var s = 'zink'
s.__proto__ === String.prototype  //true
image.png

构造函数的prototype也是一个对象

Array.prototype instanceof Object  //true
Function.prototype instanceof Object  //true

所以可以将验证公式变形为:

构造函数.prototype.__proto__ === Object.prototype

而所有构造函数的__proto__都指向了Function.prototype所以函数都是构造函数Function的示例对象

Array.__proto__ === Function.prototype //true
Function.__proto__ === Function.prototype //true
Object.__proto__ === Function.prototype //true

__proto__

每个实例对象的__proto__一定对应一个原型对象,并且从原型对象上继承属性和方法。


prototype

当你创建函数时,JS会为这个函数自动添加prototype属性,值是一个有 constructor 属性的对象,不是空对象。


constructor

constructor仅仅可以用于识别对象是由哪个构造函数初始化

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

相关阅读更多精彩内容

友情链接更多精彩内容