当我在浏览器控制台中执行 Object.prototype
时,我得到了 Object.prototype
中可用的所有属性和方法。这是预期的,但是当我在 NodeJS 终端中执行完全相同的事情时,我得到一个空对象 {}
。谁能解释一下为什么会这样?我附上了两者的截图。
最佳答案
这是因为 node 中的 console.log() 使用了 util.inspect(),它在对象上使用了 Object.keys(),它只返回可枚举的属性。而 Object.prototype
包含不可枚举的属性,这就是它返回空 Node 的原因。
在下面的代码片段中可以观察到类似的行为,当我们 console.log(Object.prototype)
它记录一个空的 {}
;
console.log(Object.prototype);
但是当我们在 Object.prototype
中明确定义一个可枚举属性时,它会记录一个包含该属性的对象:
Object.defineProperty(Object.prototype, 'property1', {
value: 42,
enumerable : true
});
console.log(Object.prototype)
对于 Reference
关于javascript - Object.prototype 在 Node 中返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233812/