先上一张概括图:
为了简洁,原型上的constructor指向都没有画出。
-
原型链
创建的每一个函数都有一个 prototype 属性,为一个指针,指向一个对象(原型)。在原型对象上有所有实例共享的一些属性和方法;
原型对象上有一个属性 constructor 指向其构造函数;
利用构造函数创建的每个实例都包含一个指针[[Prototype]] 指向构造函数的原型对象,一些浏览器支持属性 __proto__ 来访问。
当这个原型对象是另一个类型的实例时就是原型链。如上图中 Number继承Function, Function 继承 Object