这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
我们希望同一个构造函数创造的所有对象能够公用同一个函数,而不是给每个对象都整一个一摸一样的函数,这样可以很大程度上节省内存,所以我们需要prototype的出现.
构造函数的原型对象prototype
注:prototype是一个对象
有了prototype后,我们就可以把公用的方法定义在构造函数的原型对象prototype上,来供构造函数的所有实列对象来使用
好的,现在问题来了,怎么在实列对象和其构造函数的原型对象,这两个对象中建立一个联系,让实列对象能够使用其构造函数的原型对象上的方法?所以我们需要_proto_的出现
对象的原型_proto_
注:_proto_是对象的一个属性
对象的_proto_属性指向的是其构造函数的原型对象prototype,这样我们就可以通过对象的proto属性找到定义在其构造函数的原型对象上的方法,从而解决上文的问题,实现实列对象共享其构造函数的原型对象上的方法
构造函数constructor
实列对象的_proto_和构造函数的prototype里都有一个constructor属性,主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数
大家可能会有一个疑问,_proto_作为一个属性为啥可以有constructor属性?其实很简单,prototype作为一个对象可以有constructor属性,而_proto_又指向prototype,所以就相当于_proto_有constructor属性
好了,基本东西介绍的差不多了,那么我们现在来看原型链查找规则