首页 > 解决方案 > Object.prototype 在 Node 中返回空对象

问题描述

当我Object.prototype在浏览器控制台中执行时,我得到了内部可用的所有属性和方法Object.prototype。这是预期的,但是当我在 NodeJS 终端中执行完全相同的事情时,我得到一个空对象{}。谁能解释一下为什么会这样?我附上了两者的截图。

浏览器

终端

标签: javascriptnode.jsobject

解决方案


这是因为 node 中的 console.log() 使用了 util.inspect(),它在对象上使用了 Object.keys(),并且它只返回可枚举的属性。并且Object.prototype 包含不可枚举的属性,这就是它返回空节点的原因。

在下面的代码片段中可以观察到类似的行为,当我们console.log(Object.prototype)记录一个空的{};

console.log(Object.prototype);

但是当我们在其中显式定义一个可枚举属性时,Object.prototype它会记录一个包含该属性的对象:

Object.defineProperty(Object.prototype, 'property1', {
  value: 42,
  enumerable : true
});
console.log(Object.prototype)

参考


推荐阅读