在过去的 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