You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何实例化对象无法调用getPrototypeOf方法,而Object本身可调用?

为什么实例化对象不能直接调用Object.getPrototypeOf?

Object.getPrototypeOf是Object构造函数的静态方法,它属于Object这个构造函数本身,而非挂载在Object.prototype上的实例方法。这就导致了两个关键区别:

  • 静态方法只能由构造函数(也就是Object)调用,不能由它的实例对象(比如你创建的obj)调用
  • 实例对象能访问的方法,都是定义在其原型链上的方法(比如obj.toString(),因为toString在Object.prototype上,所有对象实例都能继承到)

正确用法示例

const obj = {};
// 正确调用静态方法
console.log(Object.getPrototypeOf(obj)); // 输出 Object.prototype

// 实例调用原型上的方法(正常工作)
console.log(obj.toString()); // "[object Object]"

从实例获取原型的替代方案

如果习惯从实例出发获取原型,有两个可选方式,注意区分使用场景:

  • obj.__proto__:非标准属性(多数浏览器支持,但不推荐生产环境使用)
  • Reflect.getPrototypeOf(obj):ES6新增的标准方法,和Object.getPrototypeOf功能一致,属于更现代的写法

内容的提问来源于stack exchange,提问作者Murtaza Raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:14:52