在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函数?
全局对象本身并没有名字,也没有方式访问对象本身。正式因为在全局对象里放了一个 global 属性指向了全局对象自己,所以才可以使用 global 访问全局对象。
global, global.global, global.global.global ... 都是同一个对象。
console.log 仅会打印 enumerable 属性。
console
并不是global
的 enumerable 属性。用
console.log(Object.getOwnPropertyNames(global))
就可以看到了。