对原型,原型链的理解

68 阅读1分钟

对原型,原型链的理解

1.原型

用对象举例,在控制台中随意打印一个对象,最下面可以看到prototype属性,每个对象都有prototype属性,这就叫做原型。

image.png prototype是一个对象,对象自带的一些方法如hasOwnProperty(),valueOf()等就是挂载到原型上的,因此声明了一个对象之后不用再自己定义就可以使用这些方法。

那么原型的作用之一是可以存放一些属性和方法,供构造函数的实例使用。

2.原型链

每个对象都有一个属性_proto_,_proto_指向它的构造函数的原型(因此实例对象可以使用原型里的方法),而原型也是个对象,也有_proto_指向原型的原型,层层像上,直到_proto_返回null结束,这样一层层形成的链式结构叫做原型链。

1711871093607.png

例如用构造函数Person创建的person实例,其_proto_指向构造函数的原型,可以使用构造函数的属性和方法,找不到需要的属性时会继续向上找构造函数的原型的原型(Object的原型),直到_proto_为null时结束,这个向上的线路就是原型链。

原型的作用之二是继承。 属性的继承是,当试图访问一个对象的属性时,他不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜寻,直到找到一个名字相匹配的属性,或_proto_为null。

以上是我的理解,欢迎大家批评指正!!