Temporal.PlainMonthDay.prototype.valueOf()
valueOf()
方法Temporal.PlainMonthDay
实例会抛出一个TypeError
,这会阻止 Temporal.PlainMonthDay
实例在算术或比较操作中被隐式转换为原始类型。
语法
js
valueOf()
参数
无。
返回值
无。
异常
TypeError
-
总是抛出。
描述
由于原始类型转换和数字转换都会在 toString()
之前调用 valueOf()
,因此,如果 valueOf()
不存在,那么像 monthDay1 > monthDay2
这样的表达式会隐式地将它们作为字符串进行比较,这可能会导致意外的结果。通过抛出 TypeError
,Temporal.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 |
浏览器兼容性
加载中…