在浏览器console中观察原型链最清晰的方式是结合__proto__展开、object.getprototypeof()逐级追踪及devtools属性面板验证:先展开对象查看[[prototype]],再用object.getprototypeof()代码化遍历,同时比对constructor.prototype一致性,并利用properties面板确认继承路径。

在浏览器 Console 中直接观察原型链,最清晰的方式是结合 __proto__ 展开、Object.getPrototypeOf() 逐级追踪,以及利用 Chrome/Firefox 的对象预览折叠结构——关键不是“看全”,而是“有路径、可验证、不跳步”。
用 Console 自动展开 + 点击箭头查看隐式原型链
输入一个对象(如 {a:1}),回车后它会以可折叠对象形式显示。点击左侧小三角展开,你会看到:
-
[[Prototype]]或__proto__字段(通常在最后一行或展开后底部) - 点开它,进入
Object.prototype;再点开它的__proto__,就到了null - 数组、函数等内置类型会显示对应构造器原型(如
Array.prototype、Function.prototype),层级一目了然
用 Object.getPrototypeOf() 主动逐层打印原型
避免依赖 UI 折叠状态,用代码明确走链:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
let obj = {x: 1};-
console.log(obj);→ 查看初始对象 -
console.log(Object.getPrototypeOf(obj));→ 输出Object.prototype -
console.log(Object.getPrototypeOf(Object.getPrototypeOf(obj)));→ 输出null - 封装成小函数可反复用:
function logProtoChain(obj) {<br> for (let i = 0; obj != null; i++, obj = Object.getPrototypeOf(obj)) {<br> console.log(`Level ${i}:`, obj);<br> }}<br>logProtoChain({a:1});
识别构造器与显式原型(constructor 和 .prototype)的关系
Console 中常混淆 obj.__proto__ 和 Obj.constructor.prototype。它们本应相等,但可被篡改:
- 新建对象:
let a = new Date();→a.__proto__ === Date.prototype✅ - 检查构造器:
a.constructor === Date,再查Date.prototype就是它的上一级原型 - 若看到
obj.__proto__ !== obj.constructor.prototype,说明原型被手动改过(比如obj.__proto__ = null或赋了别的对象) - 此时用
Object.getPrototypeOf(obj)更可靠,它只读取实际原型,不依赖constructor
Chrome DevTools 的“Properties”面板辅助验证
在 Console 中选中一个对象,右键 → “Store as global variable”,比如变成 temp1;然后切换到 Elements 或 Sources 面板,打开右侧的 “Properties”(属性)抽屉:
- 这里会列出该对象所有自有属性 + 继承属性(带灰色“inherited from …”标记)
- 每条继承项末尾注明来自哪一层原型(如
toStringinObject.prototype) - 点击那个原型名,会自动跳转到对应原型对象,支持继续展开,形成可视化路径
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










