即上篇文章后,又看到了prototype和__proto__的这个部分。所以再写一篇来梳理这两兄弟。

prototype(显式原型):

几乎所有的函数(除了一些内建函数)都有一个名为prototype的属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以有特定类型的所有实例共享的属性和方法。

  • 作用:用来实现基于原型的继承与属性的共享。

_proto_(隐式原型):

对象具有属性_proto_,可称为隐式原型,可用Object.getPrototypeOf()方法获得。它指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

  • 作用:构成原型链,同样用于实现基于原型的继承。举个例子,当访问obj这个对象中的x属性时,如果在obj中找不到,那么就会沿着__proto__依次查找。