object.getprototypeof()用于获取对象的直接原型,返回其[[prototype]]指向的对象,是替代__proto__的标准安全方法;仅接受对象,原始值会隐式装箱;配合isprototypeof()可判断原型链关系,循环调用可遍历完整原型链。

Object.getPrototypeOf() 用于获取指定对象的**直接原型(即内部 [[Prototype]] 指针指向的对象)**,它是访问原型链起点最标准、最安全的方式,替代了已废弃的 obj.__proto__。
基本用法:获取对象的直接原型
该方法接收一个对象作为参数,返回它的原型对象;如果该对象没有原型(如 Object.create(null) 创建的对象),则返回 null。
-
Object.getPrototypeOf({})→ 返回Object.prototype -
Object.getPrototypeOf([])→ 返回Array.prototype -
Object.getPrototypeOf(new Date())→ 返回Date.prototype -
Object.getPrototypeOf(Object.create(null))→ 返回null
配合 Object.prototype.isPrototypeOf() 判断原型链关系
仅知道“直接原型”还不够,常需判断某个对象是否在另一对象的原型链上。这时可结合 isPrototypeOf():
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
Array.prototype.isPrototypeOf([1, 2])→true -
Object.prototype.isPrototypeOf([])→true(因为Array.prototype继承自Object.prototype) -
Object.getPrototypeOf([1, 2]) === Array.prototype→true
遍历完整原型链(直到 null)
通过循环调用 Object.getPrototypeOf(),可手动走一遍原型链:
function getPrototypeChain(obj) {
const chain = [];
let current = obj;
while (current !== null) {
chain.push(current);
current = Object.getPrototypeOf(current);
}
return chain;
}
// 示例:getPrototypeChain([]) → [Array(0), Array.prototype, Object.prototype, null]
注意:不能用于原始值,且不可写
Object.getPrototypeOf() 只接受对象类型。传入字符串、数字等原始值会自动装箱,但通常这不是你想要的行为:
-
Object.getPrototypeOf("hello")→String.prototype(隐式转为 String 对象) -
Object.getPrototypeOf(42)→Number.prototype - 但更推荐先用
typeof或Object.prototype.toString.call()明确类型,避免意外装箱 - 该方法只读,无法设置原型——设置请用
Object.setPrototypeOf()(不推荐)或Object.create(proto)
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










