对原型,原型链的理解
1.原型
用对象举例,在控制台中随意打印一个对象,最下面可以看到prototype属性,每个对象都有prototype属性,这就叫做原型。
prototype是一个对象,对象自带的一些方法如hasOwnProperty(),valueOf()等就是挂载到原型上的,因此声明了一个对象之后不用再自己定义就可以使用这些方法。
那么原型的作用之一是可以存放一些属性和方法,供构造函数的实例使用。
2.原型链
每个对象都有一个属性_proto_,_proto_指向它的构造函数的原型(因此实例对象可以使用原型里的方法),而原型也是个对象,也有_proto_指向原型的原型,层层像上,直到_proto_返回null结束,这样一层层形成的链式结构叫做原型链。
例如用构造函数Person创建的person实例,其_proto_指向构造函数的原型,可以使用构造函数的属性和方法,找不到需要的属性时会继续向上找构造函数的原型的原型(Object的原型),直到_proto_为null时结束,这个向上的线路就是原型链。
原型的作用之二是继承。 属性的继承是,当试图访问一个对象的属性时,他不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜寻,直到找到一个名字相匹配的属性,或_proto_为null。
以上是我的理解,欢迎大家批评指正!!