少年,你终于弄懂原型和原型链了吗?
前记
在上个月的前端实习面试当中有几家公司问到了这个问题,虽然过去了很久但是还是想整理一下对于这个点的理解和面试中回答的答案。
ps: 最近还在熟悉新的实习,新的公司,新的环境,所以更新有点慢了hahaha.
关键点
- 原型:每个函数都有 prototype 属性,称之为原型,因为这个属性的值是个对象,所以也被称为 原型对象。原型可以放一些属性和方法,共享给实例对象使用,原型可以继承。
注意: 箭头函数没有原型对象
- proto:每个对象都有 proto 属性。
作用: 这个属性指向它的原型对象
三角恋般的关系图:
运用
同个new出来的实例可以使用一些方法,正是因为每个实例对象都有一个 proto 属性可以指向原型对象上,而原型对象上挂载着很多可以直接用的api。
原型链
ps: 图来自B站视频
我的理解: 实例对象上 proto 指向原型对象,而 原型对象也是一个对象,在上面的关键点可以知道它也有一个 proto 属性指向一个原型对象,而在js这个万物皆对象的世界里,我们的对象都来自于 Object,所以也就是来自于Object的原型对象了,最后!原型链的尽头是null