随着ES10的到来,JavaScript的全局对象也得到了增强,其中最让前端开发者感兴趣的是新的时间处理方案。这一篇文章将带你详细了解ES10的全局对象以及更精确的时间处理方式。
全局对象
ES10增强了JavaScript的全局对象,其中包括:
- globalThis
- BigInt
- globalThis
globalThis
ES10引入了globalThis,这个新的全局对象是为了解决不同JavaScript环境中全局对象的不一致性。在浏览器中,全局对象是window,在Node.js环境中,全局对象是global,在Web Worker中,全局对象是self。
所以,你现在可以使用globalThis来访问全局对象,而不必考虑你的代码运行的环境是什么。
举个例子,如果你想在浏览器和Node.js环境下访问全局对象,可以使用以下代码:
const globalObject = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
现在,你可以使用下面的代码来获得全局对象:
const globalObject = globalThis;
BigInt
ES10还引入了一个新的数字类型BigInt,它允许你处理更大的整数。
JavaScript原生的数字类型(Number)只能表示53位的整数,而BigInt可以处理任意大小的整数。
举个例子:
const bigIntNumber = 9007199254740992n;
这个变量的值是一个大于53位的整数。
Promise.prototype.finally()
ES10引入了Promise.prototype.finally()方法,它在Promise被resolved或rejected之后,不论结果如何,都会执行指定的回调函数。
在这个回调函数中,你可以进行清理工作,比如关闭文件或网络连接。这个方法可以让你更好地控制Promise的整个处理过程。
例如:
-- -------------------- ---- ------- --------------------------- -------- -- - ----- --- --------- ------ -- --------- -- - ---------------------- -- ----------- -- - ------------------------ ---
在这个例子中,不论Promise是成功还是失败,finally()都会被调用,并输出"finally!"。
更精确的时间处理
ES10增强了JavaScript的时间处理能力,这让我们可以更好地控制时间。以下是ES10的新时间处理函数:
- Date.prototype.toISOString()
- Date.prototype.toJSON()
- JSON.parse()
- JSON.stringify()
Date.prototype.toISOString()
Date.prototype.toISOString()方法返回一个符合ISO 8601标准的日期字符串。这个方法返回的字符串可以用于将日期存储到数据库或通过网络传输。
举个例子:
const date = new Date(); const isoDate = date.toISOString(); console.log(isoDate);
输出的结果如下:
2018-07-11T07:12:32.425Z
Date.prototype.toJSON()
Date.prototype.toJSON()方法返回一个符合ISO 8601标准的日期字符串,并且可以返回一个JSON格式。可以将JavaScript对象序列化为JSON字符串时使用:
const date = new Date(); const jsonDate = JSON.stringify({"date": date.toJSON()}); console.log(jsonDate);
输出的结果如下:
{"date":"2018-07-11T07:12:32.425Z"}
JSON.parse()
ES10的JSON.parse()方法增加了一项新功能:允许在解析JSON时,自定义日期格式。
举个例子:
const jsonDate = '{"date": "2018-07-11T07:12:32.425Z"}'; const obj = JSON.parse(jsonDate, (key, value) => { if (key === "date") return new Date(value); return value; }); console.log(obj.date);
在这个例子中,我们使用了JSON.parse()方法将上面的JSON字符串解析为JavaScript对象,并在解析日期时使用了特定的逻辑。
输出的结果如下:
2018-07-11T07:12:32.425Z
JSON.stringify()
ES10的JSON.stringify()方法增加了一项新功能:允许在将JavaScript对象序列化为JSON字符串时,自定义日期格式。
举个例子:
const date = new Date(); const jsonDate = JSON.stringify({"date": date}, (key, value) => { if (value instanceof Date) return value.toISOString(); return value; }); console.log(jsonDate);
在这个例子中,我们使用了JSON.stringify()方法将日期序列化为符合ISO 8601标准的字符串,并将其存储为JSON字符串。
输出的结果如下:
{"date":"2018-07-11T07:12:32.425Z"}
总结
ES10引入了一些新的全局对象和更精确的时间处理方案,这些新的功能可以让你更好地控制时间和日期,使你的代码更清晰和具备更高的可读性。
希望本文能够帮助你更好地理解ES10的新特性,并在你的JavaScript开发中有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6476c255968c7c53b0368b0d