ES11 中 globalThis 对象介绍

在过去的 JavaScript 版本中,全局对象的引用方式存在差异,比如在浏览器中是 window,在 Node.js 中是 global。为了解决这个问题,ES11 中引入了 globalThis 对象,它是一个全局对象的标准引用方式,无论在什么环境下都可以使用。

globalThis 的用途

globalThis 对象的主要作用是提供了一个跨平台的全局对象引用方式,这对于开发跨平台应用程序非常有用。例如,你可以使用 globalThis.setTimeout 来在任何环境下设置一个定时器。

此外,globalThis 还可以用于解决一些跨域访问问题。在浏览器中,由于同源策略的限制,JavaScript 代码不能直接访问其他域名下的全局对象,但是通过 globalThis 对象,我们可以在不同的上下文中访问全局对象。

globalThis 的示例代码

下面是一些使用 globalThis 对象的示例代码:

示例 1:使用 setTimeout

------------------------ -- -
  ------------------- ---------
-- ------

示例 2:跨域访问全局对象

-- ---------- -----------
----- ------ - ---------------------------------
---------- - ------------------------
----------------------------------

-------------------------------------------------------------- - ------

在这个例子中,我们创建了一个 iframe,将其 src 属性设置为百度的网址。然后,我们可以通过 globalThis 对象来访问 iframe 内部的全局对象。

globalThis 的注意事项

虽然 globalThis 对象是一个标准的全局对象引用方式,但是我们还是需要注意一些问题。

首先,globalThis 对象只在 ES11 中被引入,如果你在使用旧版的浏览器或 Node.js 等环境,可能无法使用 globalThis 对象。

其次,虽然 globalThis 对象可以让我们在不同的上下文中访问全局对象,但是这并不意味着我们可以随意跨域访问其他域名下的全局对象。在实际开发中,我们还需要遵循同源策略的限制。

最后,由于 globalThis 对象是一个全局对象,我们需要注意命名空间的问题,尽量避免在全局对象中定义重复的属性或方法。

总结

globalThis 对象是 ES11 中引入的一个全局对象标准引用方式,它可以让我们在任何环境下访问全局对象。在实际开发中,我们可以使用 globalThis 对象来解决跨平台应用程序和跨域访问问题。但是我们还需要注意 globalThis 对象的一些注意事项,遵循最佳实践,避免出现命名空间冲突等问题。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/66063d14d10417a222443ab6