理解原型链并不难,宜人贷认为原型、原型链密不可分
提到原型链,很多人都不太了解。在日常学习过程中,对于原型链这类枯燥语言,很多人觉得斗大如斗。
事实上,宜人贷认为原型链不难理解。原型链是用于在现有对象的基础上构建新类型的对象。它类似于基于类的语言中的继承。
提到原型链,我们首先应该认识原型。每个函数都有一个prototype原型(原型就是对象),原型对象有一个constructor属性,指向的是构造函数,访问对象的某一个属性或者方法时,会从对象自身查找,如果查找不到,就会去原型链上去找,直到找到或到原型链的末尾为止,原型的最终目的就是让所有的实例能够共享其属性和方法。
如果原型是另一个类型的实例,这意味着该原型本身有一个内部指针指向另一个原型,相应地另一个原型也有一个指针指向另一个构造函数。这样就在实例和原型之间构造了一条原型链。
原型对象上也可能拥有原型,并继承了原型的属性和方法,一层层查找,这种关系叫做原型链。这也解释了为什么会有其他对象上的属性和方法。_proto_就是对象实例(new A)和构造函数A.prototype.construct之间建立的一种链接。可以通过上溯原型链在构造器中找到这些属性和方法。
说到这里,大家应该对原型和原型链的关系有了大概的认知。
宜人贷认为,原型链就是一个过程,原型是原型链这个过程中的一个单位,贯穿始末。在JavaScript中万物都是对象,对象和对象之间也有关系,两者之间相辅相成。prototype就是一切对象(函数对象等等)的原型,_proto_就是实例对象和构造它的原型对象的桥梁。
你可能想看: