← [ BACK_TO_NOTES ]

ECMAScript原型

原型、构造函数、new、class 之间关系的导航笔记。

#synthesis #growing #javascript #ecmascript

[!info] related notes

ECMAScript原型

这篇笔记只保留原型主题的关系入口,不再和原子笔记重复展开定义。

建议阅读顺序

  1. js对象
  2. js原型和原型链
  3. js构造函数
  4. js-new
  5. proto-prototype-constructor
  6. js-class
  7. js继承in-es6-es5

这组概念的关系

一句话结论

JavaScript 属性继承基于原型链;class 还引入构造限制、严格模式与私有元素等语义,见 js-prototype-not-class。

面试要点

一句话回答

原型链是对象属性查找时沿原型逐级向上查找的机制,而 new 的核心作用是创建实例对象,并把实例连接到构造函数的 prototype 上。

回答原型链时最稳的说法

  • 对象访问属性时,先看自己有没有
  • 没有就沿着内部原型继续往上找
  • 找到属性就停止,否则直到 null;Object.create(null) 等对象不经过 Object.prototype

回答 new 时最稳的说法

普通构造函数的常见路径可以按步骤讲(派生类另有 super 规则):

  1. 创建一个新对象
  2. 若构造函数的 prototype 是对象,用它作新对象的原型;否则回退到相应内建原型
  3. 用新对象作为 this 执行构造函数
  4. 返回这个对象(除非构造函数显式返回对象)

面试里的常见误区

把 __proto__ 当成原型本身

proto 是 Object.prototype 上的历史访问器,可能被遮蔽或根本不存在;内部链接用 [[Prototype]] 表示,读取优先用 Object.getPrototypeOf。

把 class 当成完全不同的对象模型

class 仍使用原型继承,但不是任意构造函数写法的逐字替换;应同时理解 class 自身的语义约束。

最短记忆方式

原型链解决“属性怎么找”,new 解决“实例怎么接到原型上”。

创建于 2025/1/1 更新于 2026/10/6
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本