原型、原型链
一、原型的作用:(两条)
1、节省内存空间
2、实现数据共享(继承)
二、原型、构造函数、实例对象三者关系:
结论1、任何一个函数都有prototype属性,本身是一个对象
结论2、构造函数也有prototype属性,本身是一个对象,我们称之为原型
结论3、原型上的属性和方法都可以被实例化对象所继承 (重点)
结论4、任何一个对象都有constructor属性,实例化对象的constructor属性指向构造函数
结论5、原型也是对象也有constructor属性,原型对象的constructor属性指向构造函数
结论6、任何一个对象都有 __ proto __ 属性,实例对象的 __ proto __ 属性指向构造函数的原型
三、原型链:
在javascript中每个对象都会有一个__ proto __属性,当我们访问一个对象的属性时,
如果这个对象内部不存在这个属性,那么它就会去__ proto __ 里去找这个属性,这个 __ proto__ 又会有自己的__ proto __
四、原型链最终指向null
五、实例化对象的属性查找规则:
先从构造函数中查找,有就返回,没有从原型链上查找,有就返回,没有返回undefined
六、补充:
1、任何一个对象都有__ proto __ 属性,实例对象的__ proto __属性指向构造函数的原型
2、原型也是对象也有__ proto __ 属性,原型对象的__ proto __指向Object构造函数的原型
3、Object.prototype也是对象也有__ proto __ 属性,Object.prototype的 __ proto __指向null