关于原型与原型链可以找到成千上万的文章来解说,这里就记录下我对其的最最最最最粗浅认知,来方便理解。
- Function有prototype, Object有proto
__proto__
是以[ [ Prototype ] ]的形式存在于对象的实现中,可以看出,是不建议开发者直接去改动这个属性的。
而__proto__
就是用来描述当前对象的原型,可以理解为,它就是一个对象句柄,用以指向原型对象
。通过Object.getPrototypeOf
可以返回对象的__proto__
。prototype
是一个原型的对象,但是这个对象并不一定就是我们的基础类型Object
,通过前面的结论,可以知道对象都是有__proto__
,那么就可以用原型对象的__proto__
属性来判断它的上级原型是什么。function
是object
的继承类。function
有一个prototype
属性,同样是一个对象句柄,指向的就是我们所说的原型对象,这个对象里有一个属性叫constructor
,指向的就是function
构造函数本身。- 第三点中原型对象,听名字就不难想到,肯定也有一个
__proto__
句柄,而这个句柄指向的就是Object
的prototype
从而形成原型链。