首页 > 代码库 > 原型和原型链 —javascript面向对象高级

原型和原型链 —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

原型和原型链 —javascript面向对象高级