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

如何在NodeJS中获取__proto__?为何与浏览器运行结果不一致

差异本质原因

两边运行时的JavaScript原型逻辑完全一致,差异仅来自控制台的输出展示规则:

  • 无论浏览器还是Node.js环境,var arr = []声明的数组,arr.__proto__指向的都是Array.prototype,存储的所有原型方法、属性完全相同,符合ECMAScript规范要求。
  • 浏览器开发者控制台为调试便捷性考虑,默认会完整展开展示原型对象的所有可枚举、不可枚举成员,所以能直接看到push、pop、map等全部数组原型方法。
  • Node.js的REPL控制台默认做了输出精简优化,当识别到打印对象是Array.prototype时,会以数组字面量格式简化展示为[],不会默认展开全部属性。
Node.js中实现和浏览器一致输出的方案
  • 使用console.dir并搭配调试配置,强制完整展开原型对象:
    console.dir(arr.__proto__, { showHidden: true, depth: null })
    
    其中showHidden: true会显示不可枚举属性,depth: null会取消嵌套层级的展开限制,输出内容和浏览器控制台基本一致。
  • 也可以通过标准API验证原型内容:执行Object.getOwnPropertyNames(arr.__proto__)即可列出数组原型上的所有自有属性,确认内容完整性。
  • 生产环境更推荐使用标准方法Object.getPrototypeOf(arr)替代非标准的__proto__属性获取对象原型,兼容性和规范性更强。

内容的提问来源于stack exchange,提问作者Divyanshu Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:18:03