object.getprototypeof直接读取对象的[[prototype]]引用,不依赖构造函数或类型名;对原始值会临时装箱再取原型,但null和undefined抛错;函数对象如array的原型是function.prototype,原型链终点为null。

Object.getPrototypeOf 获取的是对象内部 [[Prototype]] 属性所指向的对象,不是靠查构造函数或类名推断出来的——它直接读取引擎为该对象分配的隐式原型引用。
它只认对象,不认类型名
JavaScript 不会去“识别”你传的是不是 Array 或 Date,而是看这个值是不是对象、它的 [[Prototype]] 指向谁。比如:
-
Object.getPrototypeOf([])返回Array.prototype,因为数组字面量创建时,引擎自动将其 [[Prototype]] 设为Array.prototype; -
Object.getPrototypeOf(new Date())返回Date.prototype,同理,Date 构造器在实例化时设置了该链接; -
Object.getPrototypeOf({})返回Object.prototype,普通对象默认继承自它。
原始值会被装箱,但有严格限制
传入字符串、数字、布尔值时,JS 引擎会先调用 ToObject() 把它们临时转成包装对象(String、Number、Boolean 实例),再取其 [[Prototype]]:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Object.getPrototypeOf("abc") === String.prototype→ true; -
Object.getPrototypeOf(42) === Number.prototype→ true; -
Object.getPrototypeOf(true) === Boolean.prototype→ true。
但 null 和 undefined 无法装箱,直接抛 TypeError。
构造函数本身不是“内置对象的实例”
常见误区:以为 Object.getPrototypeOf(Array) 能拿到数组的原型。其实 Array 是个函数对象,它的 [[Prototype]] 是 Function.prototype,不是 Array.prototype:
-
Object.getPrototypeOf(Array) === Function.prototype→ true; - 想获取数组实例的原型,必须传实例:
[]、new Array()或Array.from(...)。
原型链终点是 null,不是 Object.prototype
Object.prototype 的 [[Prototype]] 是 null,这才是真正的链尾:
-
Object.getPrototypeOf(Object.prototype) === null→ true; - 所有内置对象(Array、Date、RegExp 等)的原型链最终都会经过
Object.prototype到达null。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










