javascript - Object.prototype 在 Node 中返回空对象
问题描述
当我Object.prototype
在浏览器控制台中执行时,我得到了内部可用的所有属性和方法Object.prototype
。这是预期的,但是当我在 NodeJS 终端中执行完全相同的事情时,我得到一个空对象{}
。谁能解释一下为什么会这样?我附上了两者的截图。
解决方案
这是因为 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)
供参考
推荐阅读
- python-3.x - 使用 numpy 沿 4D 数组的第一个轴平均 n 个元素
- javascript - 为什么我的JS在第一首完成后没有播放另一首歌曲?
- mysql - Mysql 多个 SELECT 和 Count 查询
- sql - SQL 最早/最新时间查询
- colors - 如何在jupyter中着色和输出代码?
- wpf - 边框和标签之间烦人的 1 像素带?
- python - 如何用 pandas 处理不同时间序列的变长?
- reactjs - 在 React 组件中导入时,SCSS 文件不包括 @used 文件的类
- python - “utf-8”编解码器无法解码位置 12387 中的字节 0xa0
- google-cloud-platform - Google Cloud Platform 计算错误率图表为 100%