JavaScript globalThis

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。

上一篇: JavaScript 全局对象

下一篇: undefined

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号