Temporal.PlainDateTime.prototype.valueOf()
valueOf() 方法 Temporal.PlainDateTime 实例会抛出 TypeError,这会阻止 Temporal.PlainDateTime 实例在算术或比较操作中使用时被 隐式转换为原始类型。
语法
js
valueOf()
参数
无。
返回值
无。
异常
TypeError-
总是抛出。
描述
由于 原始类型转换 和 数字转换 都在 toString() 之前调用 valueOf(),如果 valueOf() 不存在,那么像 dateTime1 > dateTime2 这样的表达式会隐式地将它们作为字符串进行比较,这可能会产生意外的结果。通过抛出 TypeError,Temporal.PlainDateTime 实例可以阻止此类隐式转换。您需要使用 Temporal.PlainDateTime.prototype.toString() 方法显式地将它们转换为字符串,或者使用 Temporal.PlainDateTime.compare() 静态方法来比较它们。
示例
Temporal.PlainDateTime 上的算术和比较操作
对 Temporal.PlainDateTime 实例的所有算术和比较操作都应使用专用方法或显式将其转换为原始类型。
js
const dt1 = Temporal.PlainDateTime.from("2022-01-01T00:00:00");
const dt2 = Temporal.PlainDateTime.from("2022-07-01T00:00:00");
dt1 > dt2; // TypeError: can't convert PlainDateTime to primitive type
Temporal.PlainDateTime.compare(dt1, dt2); // -1
dt2 - dt1; // TypeError: can't convert PlainDateTime to primitive type
dt2.since(dt1).toString(); // "P181D"
规范
| 规范 |
|---|
| Temporal # sec-temporal.plaindatetime.prototype.valueof |
浏览器兼容性
加载中…