原型,原型链
原型
function Fn() {}
var fn = new Fn();
fn是由Fn 构造函数创建出来的是实例对象
每个函数在被创建的时候都会被自动添加一个属性 prototype 指向原型对象 (显式原型)
原型对象里都有一个constructor属性 指向函数对象
每个实例对象中都会包含一个__proto__ 属性 (隐式原型)
Fn.prototype.constructor = Fn
对象的隐式原型值等于其对应构造函数的显式原型值
fn.__proto__ = Fn.prototype
原型链
访问(读取)一个对象的属性时,先在自身属性中查找,如果没有沿着__proto__ 这条链向上查找(隐形原型链)
Object的原型对象是原型链的尽头(null)
所有函数都是Function的实例,包括(Function)
Function.prototype.__proto__ = Object.prototype