Appearance
原型链:对象委托、属性查找与 class 语法基础
主题边界
- JavaScript 的继承本质上是对象之间的委托关系,而不是传统类继承的内存复制。
- class 只是原型机制之上的语法糖,真正的属性查找仍发生在原型链上。
机制与流程
- 对象读取属性时,先查自身属性,再沿
[[Prototype]]向上查找直到null。 - 函数对象的
prototype用作new创建实例时的原型来源;实例通过内部[[Prototype]]指向它。 instanceof、方法共享和构造链覆盖都建立在这套查找机制上。
关键差异
prototype存在于函数对象上,[[Prototype]]存在于实例对象上,__proto__只是多数环境暴露的访问器。- class 看起来像类系统,但底层仍是原型链和构造流程。
边界条件
- 频繁动态修改原型会破坏引擎优化,影响隐藏类和内联缓存。
- 跨 iframe 或反序列化对象时,
instanceof的结论可能不如直觉稳定。
工程落点
- 理解原型链有助于阅读框架源码、polyfill、手写
new/instanceof和对象模型相关题目。 - 业务开发里较少直接操作原型,但误解它会影响对象继承和方法共享的判断。