为什么我们不能将“控制台”视为“全局”对象的属性?

时间:2019-11-11 09:35:25

标签: javascript node.js

我们可以使用global.console.log('A')表示控制台是全局对象的属性。但是使用console.log(global),我看不到任何名为“ console”的属性?

1 个答案:

答案 0 :(得分:4)

它是不可枚举的,因此,仅在记录普通global对象时它不会显示。但是它仍然直接位于global上:

>global.hasOwnProperty('console')
true
> Object.getOwnPropertyDescriptor(global, 'console')
{
  value: {
    ...
  },
  writable: true,
  enumerable: false,
  configurable: true
}

如果要检查对象的所有属性,请使用Object.getOwnPropertyNames

Object.getOwnPropertyNames(global)

global上有很多个不可枚举的属性,只有几个可枚举的属性)