什么是原型和原型链?
什么是原型
JS 声明构造函数(用来实例化对象的函数)时,会在内存中创建一个对应的对象,这个对象就是原函数的原型。
构造函数默认有一个 prototype 属性,prototype 的值指向函数的原型。同时原型中也有一个 constructor 属性,constructor 的值指向函数对象。
通过构造函数实例化出来的对象,并不具有 prototype 属性,其默认有一个proto属性,proto的值指向构造函数的原型。在原型对象上添加或修改的属性,在所有实例化出的对象上都可共享。
什么是原型链
当在实例化的对象中访问一个属性时,首先会在该对象内部(自身属性)寻找,如找不到,则会向其proto指向的原型中寻找,如仍找不到,则继续向原型中proto指向的上级原型中寻找,直至找到或 Object.prototype.proto为止(值为 null),这种链状过程即为原型链。