console.dir()是最直接有效的方式,可交互展开原型链至null;推荐用object.getprototypeof()手动遍历;断点中可通过store as global variable配合console.dir()或watch面板跟踪;logprotochain函数能一键打印继承路径。

在浏览器控制台中调试 JavaScript 原型链,核心是“可视化结构”和“逐层验证”。console.dir() 是最直接有效的方式,它能完整展开原型链,比 console.log() 清晰得多。
用 console.dir() 展开完整原型结构
在断点暂停或任意可访问对象的位置,输入:
-
console.dir(obj)—— 立即以可交互树形结构输出对象 - 展开左侧的 __proto__ 节点,看到第一级原型(即
Object.getPrototypeOf(obj)) - 每层 __proto__ 都可继续点击展开,一直到底层的
null - 构造函数名、内置方法(如
toString)、继承来的属性都会清晰列出
手动遍历并检查某一层原型
适合快速验证某段链路或查看自有属性:
-
obj.__proto__—— 查看直接原型(非标准但兼容性好) -
Object.getPrototypeOf(obj)—— 标准写法,推荐用于脚本中 -
Object.getPrototypeOf(Object.getPrototypeOf(obj))—— 向上再跳一级 -
Object.getOwnPropertyNames(obj.__proto__)—— 列出该原型上的所有自有属性名(含不可枚举的)
在 Sources 断点中结合 Scope 和临时变量观察
断点暂停时,Scope 面板只显示自有属性。想查原型链,可以:
- 右键变量 → “Store as global variable”,例如生成
temp1 - 立即在控制台执行
console.dir(temp1) - 或在 Watch 面板添加表达式:
Object.getPrototypeOf(temp1),持续跟踪变化
快速打印整条原型链路径
想一眼看清从对象到 null 的继承顺序?在控制台运行:
function logProtoChain(obj) {
let chain = [];
let current = obj;
while (current !== null) {
chain.push(current.constructor?.name || 'Object');
current = Object.getPrototypeOf(current);
}
console.log(chain.join(' ← '));
}
logProtoChain(yourObj);











