在 JavaScript 中,全局变量以及函数都被定义在全局对象(Global Object)中。每个环境(浏览器、Node.js 等)拥有自己的全局对象。在 ES11 中,新增了一个全局对象:GlobalThis。那么 GlobalThis 和 Window 对象有什么区别呢?本文将详细解释它们之间的差别,并提供相关的示例代码。
GlobalThis 和 Window 对象的区别
- 作用范围不同:GlobalThis 对象在任何环境中都是全局对象,也就是说,在浏览器和 Node.js 等环境中都能使用它。而 Window 对象仅在浏览器环境中有效。
- 命名规范不同:GlobalThis 没有直接访问的方式,需要使用该环境中的 this 或者 globalThis 来间接访问。而 Window 对象能够直接在浏览器中访问,且在浏览器中默认使用 window 关键字进行访问。
- 全局性质不同:GlobalThis 是一个内置的全局对象,而 Window 对象是一个由特定的运行环境提供的全局对象。
GlobalThis 和 Window 对象的使用场景
- 在 JavaScript 中,实现跨平台的全局变量以及函数需要使用 GlobalThis。这是因为它可以在所有环境中都使用,而 Window 对象仅在浏览器环境中有效。
- 如果需要在浏览器中访问全局对象,使用 Window 对象更为方便。
示例代码
在浏览器和 Node.js 环境中运行以下代码,分别输出 GlobalThis 和 Window 对象,以及它们的类型。
-- -------------------- ---- ------- -- ----- ------------------ -- ---- ------ -- ------------------ -------- -- -- ------ ------------------------ -- ----- ------ -------------- ------ ----- ------------------ ------------ -- -- ------ -- ------- -- ------------------ -- ---- ------ -- ------------------ ------------ -- -- ------ ------------------ -------- -- -- ---------
总结
GlobalThis 和 Window 对象虽然都是全局对象,但它们的作用范围、命名规范以及全局性质不同。在 JavaScript 中,使用 GlobalThis 可以实现跨平台的全局变量和函数,并且可以在任何环境中使用。而在浏览器中,Window 对象则是默认的全局对象,便于访问和使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6451b8e8675af4061b58019a