原型及原型链
原型
原型: 每个function类型对象(构造函数)都有一个prototype属性,这就是对象的原型(显示原型);
原型是一个对象,包含constructor和__proto__两个属性以及其他定义的方法
原型有几个特点:
1. 是一个对象,至少包含constructor和__proto__两个属性;
2. 添加到原型上的方法或者属性会被所有new出来的实例共享;
3. 每个实例对象都会有一个__proto__属性(隐式原型),其值会指向其构造函数的原型;
4. 原型的constructor属性指向构造函数本身。
原型.png
原型链
原型链: 每个原型都有一个__proto__属性,指向它对应的构造函数的原型,一层一层往上,直到Object。Object的__proto__属性为null
对象调用属性和方法的时候会沿着原型链往上寻找,访问的优先级是先自己然后往上寻找,直到object还没有则返回undefined
原型链.png