Skip to main content

什么是原型和原型链?

什么是原型

JS 声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型。

构造函数默认有一个 prototype 属性,prototype 的值指向函数的原型。同时原型中也有一个 constructor 属性,constructor 的值指向函数对象。

通过构造函数实例化出来的对象,并不具有 prototype 属性,其默认有一个proto属性,proto的值指向构造函数的原型。在原型对象上添加或修改的属性,在所有实例化出的对象上都可共享。

什么是原型链

当在实例化的对象中访问一个属性时,首先会在该对象内部(自身属性)寻找,如找不到,则会向其proto指向的原型中寻找,如仍找不到,则继续向原型中proto指向的上级原型中寻找,直至找到或 Object.prototype.proto为止(值为 null),这种链状过程即为原型链。