JavaScript globalThis 语法
globalThis 是 JavaScript 的一个全局属性(相当于全局范围内的变量),它代表的是一个全局的 this 值。
在以前,访问全局对象需要根据不同的环境来使用不同的方式。例如在浏览器环境中,需要使用 window 对象。而在 Node.js 环境中,需要使用 global 对象。
而 globalThis 的出现,就是为了提供一种能在所有 JavaScript 环境中运行的全局对象(包括浏览器、Node.js、Web Workers 等)。
语法:
globalThis说明:
在不同环境中,globalThis 代表的意义不一样。
- 在浏览器环境中,globalThis 既是一个全局对象,又是一个全局属性。globalThis 等价于 window 对象,然后 globalThis.globalThis 指向的也是 window 对象。
- 在 Node.js 环境中,globalThis 同样既是一个全局对象,又是一个全局属性。不过 Node.js 的全局对象是 globalThis 而不是 window。
很多初学的小伙伴会很疑惑:“为什么官方文档称 globalThis 是一个全局属性,而不是一个全局对象?” 实际上,globalThis 既是一个全局对象,又是一个全局属性。官方将它称为全局属性是完全没问题的。
JavaScript globalThis 摘要
| 属于 | JavaScript 全局对象 |
|---|---|
| 使用频率 | 中 |
| 官方文档 | 查看 |
| MDN | 查看 |
JavaScript globalThis 示例
接下来,我们通过几个简单的例子来讲解一下 JavaScript globalThis 是如何使用的。
示例 1:浏览器环境中的 globalThis
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title></title>
<script>
console.log(globalThis === window);
console.log(globalThis === window.globalThis);
console.log(globalThis.globalThis === window.globalThis);
console.log(globalThis.globalThis === globalThis);
</script>
</head>
<body>
</body>
</html>运行结果如下。
true
true
true
true分析:
特别注意,只有在浏览器环境中,globalThis 才是和 window 对象等价。Node.js 环境是没有 window 对象这一说法的。
示例 2:Node.js 环境中的 globalThis
console.log(globalThis === global.globalThis);
console.log(globalThis === window);上面代码请在 Node.js 中运行,其结果如下。
true
(报错) ReferenceError: window is not defined分析:
Node.js 的全局对象是 globalThis,而不是 window。window 是 “窗口” 对象的意思,只有浏览器才有这玩意。
对于 globalThis,小伙伴们记住以下几点即可。
- 在浏览器环境中,globalThis 等同于 window。
- 在 Node.js 环境中,globalThis 等同于 global。
- 在 Web Workers 中,globalThis 等同于 self。
