简单理解JavaScript原型链

什么是原型 ?

我是这样理解的:每一个JavaScript对象在创建的时候就会与之关联另外一个特殊的对象,这个对象就是我们常说的原型对象,每一个对象都会从原型“继承”属性和方法。

什么是原型链 ?

一个由有限个原型对象组成的用来实现继承和共享属性的对象链。

打个通俗的比方,可以把原型链理解成一个家族的血亲关系,每一个后代都会从父代身上继承该家族特有的基因和特征。

什么是"继承" ?

关于原型的继承,我们常说每一个对象都会从原型上"继承"属性,实际上,此"继承"并非意味着简单的复制,而是一个可访问的通道,引用《你不知道的JavaScript》中的一句话:

继承意味着复制操作,然而JavaScript默认并不会复制对象的属性,相反,JavaScript只是在两个对象之间创建一个关联,这样,一个对象就可以通过委托访问另一个对象的属性和函数,所以与其说是继承,委托的说法反而更加准确。

进群:697699179可以获取Java各类入门学习资料!

这是我的微信公众号【编程study】各位大佬有空可以关注下,每天更新Java学习方法,感谢!

学习中遇到问题有不明白的地方,推荐加小编Java学习群:697699179内有视频教程 ,直播课程 ,等学习资料,期待你的加入

三个概念

prototype

构造函数特有的属性

指向一个原型对象,对象存储了要共享给实例的属性和方法

_proto_

实例对象的一个指针属性

指向上层构造函数对应的prototype,即自己的原型对象

constructor

原型对象的一个属性

指向原型对象的构造函数

通过new创建实例时,对象会继承该属性

对象的原型链

Object

作为对象: Object.__proto__ = Function.prototype

作为函数: Object.prototype 是原型链的顶端, Object.prototype.__proto__ = null

Function

作为对象: Function.__proto__ = Function.prototype

作为函数: Function.prototype 用于共享,而 Function.prototype__proto__ 继承自 Object.prototype

Array

作为对象: Array.__proto__ = Function.prototype

作为函数: Array.prototype 用于共享, Array.prototype.__proto__ 继承自 Object.prototype

Person

作为对象: Person.__proto__ = Function.prototype

作为函数: Person.prototype 用于共享, Person.prototype.__proto__ 继承自 Object.prototype

原型链关系:

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

相关阅读更多精彩内容

友情链接更多精彩内容