为什么Object.prototype看起来像一个空对象?

mis*_*may 1 javascript

console.log(Object.prototype); // -> "{}"
Run Code Online (Sandbox Code Playgroud)

我期望console.log(Object.prototype)输出一些属性或类似"toString"的方法.
为什么不呢?

Thi*_*ter 6

默认方法未标记为可枚举,因此在查看时不显示Object.prototype.

原因很简单:当查看某个对象或更重要的迭代它的属性时for(var prop in object),通常不希望看到任何默认方法.当然,人们总是可以obj.hasOwnProperty(prop)在这样的循环中使用检查,但是通过知道Object.prototype默认情况下没有任何可枚举的东西(并且良好的代码也不会向其添加可枚举的属性),这是非常舒适的.

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty#Enumerable_attribute (2认同)