js原型和原型链

function Person(){

}

定义Person函数就是一个特殊对象,特有一个prototype原型属性(因为所有的对象都一prototype原型!),protptype属性有自己的prototype的对象,而prototype有自己的constuct属性,constuct属性有自己的constuctor对象,constuctor本身就是我们构造出来的函数本身。

原型链:当从一个对象那里调取属性或方法时,如果该对象自身不存在这样的属性或方法,就会去自己关联的prototype对象那里寻找,如果prototype没有,就会去prototype关联的前辈prototype那里寻找,如果再没有则继续查找Prototype.Prototype引用的对象,依次类推,直到Prototype.….Prototype为undefined(Object的Prototype就是undefined)从而形成了所谓的“原型链”。

1.构造函数、原型和实例的关系

①构造函数都有一个属性prototype,这个属性是一个对象(Object的实例)
②原型对象prototype里面有一个constructor属性,该属性指向原型对象所属的构造函数
③实例对象都有一个_proto_属性,该属性也指向构造函数的原型对象,它是一个非标准属性,不可以用于编程,它是用于浏览器自己使用的
2.prototype与_proto_的关系
①prototype是构造函数的属性
②_proto_是实例对象的属性
——这两者都指向同一个对象

【总结】i)函数也是对象,对象不一定是函数;

对象的本质:无序的键值对集合;键值对当中的值可以是任意数据类型的值

对象就是一个容器,这个容器当中放的是(属性和方法)

3.属性搜索

  ①在访问对象的某个成员的时候会先在对象中找是否存在

  ②如果当前对象中没有就在构造函数的原型对象中找

  ③如果原型对象中没有找到就到原型对象的原型上找

  ④知道Object的原型对象的原型是null为止

posted @ 2018-06-12 06:05  青松&  阅读(156)  评论(0)    收藏  举报