Temporal.PlainMonthDay.prototype.valueOf()

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

valueOf() 方法Temporal.PlainMonthDay 实例会抛出一个TypeError,这会阻止 Temporal.PlainMonthDay 实例在算术或比较操作中被隐式转换为原始类型

语法

js
valueOf()

参数

无。

返回值

无。

异常

TypeError

总是抛出。

描述

由于原始类型转换数字转换都会在 toString() 之前调用 valueOf(),因此,如果 valueOf() 不存在,那么像 monthDay1 > monthDay2 这样的表达式会隐式地将它们作为字符串进行比较,这可能会导致意外的结果。通过抛出 TypeErrorTemporal.PlainMonthDay 实例可以防止这种隐式转换。你需要使用 Temporal.PlainMonthDay.prototype.toString() 显式地将它们转换为字符串。

示例

Temporal.PlainMonthDay 上的算术和比较操作

所有在 Temporal.PlainMonthDay 实例上的算术和比较操作都应该使用专用方法,或者显式地将它们转换为原始类型。

js
const md1 = Temporal.PlainMonthDay.from("01-01");
const md2 = Temporal.PlainMonthDay.from("07-01");
md1 > md2; // TypeError: can't convert PlainMonthDay to primitive type
Temporal.PlainDate.compare(
  md1.toPlainDate({ year: 2021 }),
  md2.toPlainDate({ year: 2021 }),
); // -1

md2 - md1; // TypeError: can't convert PlainMonthDay to primitive type
md2
  .toPlainDate({ year: 2021 })
  .since(md1.toPlainDate({ year: 2021 }))
  .toString(); // "P181D"

规范

规范
Temporal
# sec-temporal.plainmonthday.prototype.valueof

浏览器兼容性

另见