一天一个前端知识点(15):什么是原型链?原型链是如何工作的?

23 阅读2分钟

在 JavaScript 中,每个对象都有一个内部属性 [[Prototype]](或者叫 proto),它指向该对象的原型对象(即它的父级对象)。原型对象也是一个对象,并且也有自己的原型对象,这样就形成了一个链式结构,被称为原型链。

当访问一个对象的属性或方法时,JavaScript 引擎会首先查找该对象本身是否具有该属性或方法,如果没有找到,它会去该对象的原型对象中查找,如果还没有找到,它会继续去原型对象的原型对象中查找,直到找到该属性或方法为止,或者原型链的顶端(Object.prototype)。

原型链的工作原理如下:

  1. 当访问一个对象的属性或方法时,JavaScript 引擎会首先查找该对象本身是否具有该属性或方法。
  2. 如果该对象本身没有该属性或方法,它会沿着对象的原型链向上查找,直到找到该属性或方法为止,或者到达原型链的顶端。
  3. 如果在原型链上找到了该属性或方法,则返回该属性或方法;如果在原型链上没有找到该属性或方法,则返回 undefined。

原型链的实际应用包括:

  1. 继承。在 JavaScript 中,使用原型链可以实现继承,子对象可以继承父对象的属性和方法。
  2. 扩展对象。可以在原型对象中添加属性和方法,从而扩展对象的功能。
  3. 共享属性和方法。原型对象的属性和方法是被所有对象共享的,这可以节省内存并提高性能。

需要注意的是,在修改原型对象时,会影响到所有从该原型对象继承的对象。因此,应该谨慎地修改原型对象。