1.每一个函数数据类型的值都有一个天生自带的属性:prototype,这个属性的属性值是一个对象(“用来存储实例公用属性和方法”)
- 普通函数
- 类(自定义类和内置类0
2.在prototype这个对象中,有一个天生自带的属性: constructor ,这个属性存储的是当前函数本身
Fn.prototype.constructor == Fn; //true
3.每一个对象数据类型的值,也有一个天生自带的属性:proto,这个属性指向所属类的prototype
- 普通对象,数组,正则,日期,类数组等等
- 实例也是对象数据类型的值
- 函数的原型prototype
- 函数也是对象数据类型的值
原型链查找机制
1.先找自己的私有的属性,有则调用,没有则继续找
2.基于prototype找所属类原型上的方法(Fn.prototype),如果还没有,则继续基于prototype往上找,一直找打Object.prototype为止