前言 背景 JavaScript 的继承和 Java/C 等语言有很大的不同,关键就在于这个原型链,而我做了这么多年的 JavaScript 也一直没有彻底弄清楚。尤其是到了 Object.prototype 和 Function.prototype 的层级就更云里雾里了,所以想这次一次弄清楚。 原型链 先看一张经典的描述原型链的图。 prototype 是所有函数都具有的属性,也被成为原型对象。在将该函数作为构造函数创建一个实例时,实例的 [[prototype]] 属性和该函数的 prototype 属性指向同一个对象。