Skip to content

原型链(Prototype Chain)

JavaScript 对象通过“原型链”实现属性查找与继承。

一个直观的说法

当你访问 obj.foo 时:

  1. 先在 obj 自己身上找。
  2. 找不到,就去 obj.__proto__(原型)上找。
  3. 继续往上,直到 null 为止。

这条向上的链条就是原型链。

prototype__proto__

  • Function.prototype:函数的原型对象(给实例用)。
  • obj.__proto__:对象的原型引用(指向构造函数的 prototype)。

class 的本质

class 只是语法糖,底层仍然是“函数 + 原型链”。

javascript
class Person {
    say() { console.log('hi'); }
}

let p = new Person();

p__proto__ 指向 Person.prototype

常见误区

  • 原型链不是“复制”,而是“引用”。
  • 修改原型会影响所有实例。

进一步阅读

原型链让 JavaScript 拥有灵活的继承方式,但也需要小心全局修改。

CC-BY 4.0 Licensed