随着 JavaScript 的不断发展,全局对象作为一个重要的组成部分也逐渐发生了变化。在 ES5 之前,window
对象只在浏览器中存在,并且在 Node.js 环境中它是不存在的。为了弥补这一不足,ES10 中加入了一个全新的全局对象 globalThis
。
什么是 globalThis
globalThis
是 ES10 中加入的一个全局对象,它是一个在任何环境下都能访问到的对象,代替了以往浏览器和 Node.js 中的全局对象。在浏览器中,globalThis
对象指的是window
对象,而在 Node.js 中,globalThis
则指的是全局对象global
。
使用globalThis
可以使代码更具通用性,同时也更加具有可移植性,从而提高代码的可维护性和可读性。
globalThis 的使用
简单使用
我们可以在控制台中输入 globalThis
来查看当前环境下globalThis
对象的具体信息:
console.log(globalThis);
在 Node.js 中运行上述代码会输出:
-- -------------------- ---- ------- ------ -------- - ------- ----------- -------------- ---------- --------------- ------------- ---------- -------------- ------------ ---------- ------------- ----------- ---------- ----------- - -------------------------------- ---------- -- --------------- ---------- ---------------- --------------- ---------- ---------------- ------------- ---------- ------------- - -------------------------------- ---------- - -
而在浏览器中运行上述代码会输出:
Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, parent: Window, …}
可以看到,浏览器环境下的globalThis
对象就是window
对象,而 Node.js 环境下的globalThis
对象是global
对象。
示例代码
下面我们通过一个简单的示例来理解如何在不同的环境下使用globalThis
。
假如我们有一个名为 hello
的全局函数,它能够接收一个参数并返回一个包含该参数和当前时间的对象:
function hello(name) { return { name, time: new Date() }; }
为了让这个函数能够在所有环境下使用,我们可以使用globalThis
对象来定义该函数:
globalThis.hello = function(name) { return { name, time: new Date() }; }
这样一来,无论在哪个环境下调用 hello
函数都可以顺利执行。
globalThis 的指导意义
globalThis
对象的出现使得我们可以更方便地在不同的环境下编写 JavaScript 代码,提高了代码的通用性和可移植性。同时,它也指导我们更加注重代码的可维护性和可读性,尽可能的将代码写成能够在各个环境下重复使用的格式,从而提高代码的效率和可靠性。
在使用globalThis
的同时,我们也要注意一些坑点,例如在浏览器环境下使用import/export时,需要使用Babel等工具进行编译,否则会出现兼容性问题。
总结
我们在本文中介绍了 ES10 中的全局对象globalThis
,并提供了示例代码来说明其的使用方法。使用globalThis
可以使我们的代码更具通用性,提高代码的可移植性和可维护性,因此我们应该充分认识到它的重要性,并在实际开发中尽可能应用它。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c71cfe10032fedd39087fc