原型和原型链 —javascript面向对象高级
原型
1.原型有什么用:js是用原型来实现继承
2.原型是:每一个对象都有其原型对象__proto__,这个原型对象指向构造它的构造函数的原型属性prototype.
## 一、函数和对象的关系 ##
1.函数是对象的一种,instanceof 可以判断
2.对象是函数创建的
## 二.prototype 与 __proto__ ##
1.prototype是函数的一个属性,每一个函数都有protptype属性,这个值是一个对象,里面有一个constructor属性,指向它自己。
2.__proto__ 每一个对象都有其原型属性__proto__,其值是一个对象,指向构造它的构造函数的prototype
## 三.构造函数中的属性与原型中的属性区别 ##
1.原型中的属性,所有实例通用,一个改变,所有改变,实现继承。 实例中的属性是其私有的
2.实例私有属性优先级比原型中的优先级高,查找时候会先查找实例的私有属性,若没有才会查找原型
## 四.属性查找顺序 ##
1.访问一个属性时,会现在实例本身查找该属性,如果没有,就到其原型对象中去查找,若还是没有会去构造这个对象的构造函数中去查找,如果没有就在这个构造函数中的prototype中去找,如果还是没有就到Object对象中去找,再没有就是null **——原型链**
2.自定义函数本质上都是通过Object函数来创建的,所以他的__proto__指向的Object.prototype。
3.Object.prototype的__proto__指向Null