js原型链
说到原型链,首先有这几个概念需要了解,原型对象,构造函数,实例对象
JS规定:每一个构造函数都有一个prototype属性,指向一个对象,注意这个prototype就是一个对象,叫做原型对象。这个对象的所有属性和方法,都会被构造函数所拥有。
对象都有一个属性__proto__指向构造函数的prototype原型对象。
接下来简单的说说三者的关系
- 构造函数的prototype属性指向了构造函数原型对象
- 实例对象是由构造函数创建的,实例对象的__proto__属性指向了构造函数的原型对象
- 构造函数的原型对象的constructor属性指向了构造函数,实例对象的原型的constructor属性也指向了构造函数
接下来看看什么是原型链
最后说说成员查找机制
当访问一个对象的属性或方法时,首先查找这个对象自身有没有该属性,如果没有就查找他的原型(也就是__proto__指向的prototype原型对象)如果还没有就查找原型对象的原型(Object的原型对象),依此类推,一直找到
Object为止(null)__proto__意义在于为对象成员查找机制提供一个方向。