Nodejs中输出Global为什么还有一个global?而且没有console函数?

在nodejs中执行:console.log(global);结果显示:

Object [global] {
  ...,
  global: [Circular],
  process: process {},
  Buffer:{},
  clearImmediate: [Function],
  clearInterval: [Function],
  clearTimeout: [Function],
  setImmediate:{ },
  setInterval: [Function],
  setTimeout:{ },
}

其中:
①再次出现了global,执行console.log(global.global)结果一样;
②全局对象中没有console函数,但执行global.console.log()无错。
所以:
为什么还有一个global?为什么没有console函数?

阅读 3.2k
1 个回答

全局对象本身并没有名字,也没有方式访问对象本身。正式因为在全局对象里放了一个 global 属性指向了全局对象自己,所以才可以使用 global 访问全局对象。

global, global.global, global.global.global ... 都是同一个对象。

console.log 仅会打印 enumerable 属性。console 并不是 global 的 enumerable 属性。

console.log(Object.getOwnPropertyNames(global)) 就可以看到了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题