Skip to content

原型链:对象委托、属性查找与 class 语法基础

主题边界

  • JavaScript 的继承本质上是对象之间的委托关系,而不是传统类继承的内存复制。
  • class 只是原型机制之上的语法糖,真正的属性查找仍发生在原型链上。

机制与流程

  • 对象读取属性时,先查自身属性,再沿 [[Prototype]] 向上查找直到 null
  • 函数对象的 prototype 用作 new 创建实例时的原型来源;实例通过内部 [[Prototype]] 指向它。
  • instanceof、方法共享和构造链覆盖都建立在这套查找机制上。

关键差异

  • prototype 存在于函数对象上,[[Prototype]] 存在于实例对象上,__proto__ 只是多数环境暴露的访问器。
  • class 看起来像类系统,但底层仍是原型链和构造流程。

边界条件

  • 频繁动态修改原型会破坏引擎优化,影响隐藏类和内联缓存。
  • 跨 iframe 或反序列化对象时,instanceof 的结论可能不如直觉稳定。

工程落点

  • 理解原型链有助于阅读框架源码、polyfill、手写 new / instanceof 和对象模型相关题目。
  • 业务开发里较少直接操作原型,但误解它会影响对象继承和方法共享的判断。

相关主题