函数原型
每个函数都有一个prototype属性,它默认指向一个Object空实例对象(即称为:原型对象)
每个原型对象中有一个constructor,它指向函数对象
fn.prototype.constructor === fn // true
给原型对象添加属性(一般都是方法)===>实例对象可以访问
作用:函数的所有实例对象自动拥有原型中的属性(方法)
显式原型与隐式原型
每个函数function都有一个prototype,即显式原型,默认指向一个空的Object实例对象
每个实例对象都有一个__proto__,即隐式原型
对象的隐式原型为其对应构造函数的显式原型的值
Fn.prototype === fn.__proto__
使用new创建实例对象的时候自动添加__proto__属性
原型链
访问一个属性时
- 先在自身属性中查找,找到返回
- 如果没有,再沿着__proto__这条链向上查找,找到返回
- 如果最终没找到,返回undefined 作用:查找对象的属性 原型链的尽头:Object.prototype。
所有对象均从Object.prototype身上继承属性