无论什么时候,只要创建了一个函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性是一个指针,指向该函数的原型对象。
同时,原型对象也会自动获得一个constructor属性,这个属性是一个指向prototype属性所在函数的指针。
当你调用这个(构造)函数创建实例时,该实例的内部将包含一个指向构造函数的原型对象的指针(内部属性),[[Prototype]](存在于实例与构造行数的原型对象之间,而不是实例与构造函数之间)。
可以通过isPrototypeOf()方法来确定对象之间是否存在这种关系。ECMAScript5增加了一个叫Object.getPrototypeOf()方法来返回[[Prototype]]的值。
每当代码读取某个对象的某个属性时,都会执行搜索,先在当前实例中搜索,然后去原型对象搜索。这正是多个对象实例共享原型所保存的属性和方法的基本原理。