原型与原型链的粗浅认知

关于原型与原型链可以找到成千上万的文章来解说,这里就记录下我对其的最最最最最粗浅认知,来方便理解。

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