Temporal.PlainMonthDay.prototype.with()

可用性有限

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

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

with() 方法是 Temporal.PlainMonthDay 实例的一个方法,它返回一个新的 Temporal.PlainMonthDay 对象,该对象表示当前月份-日期,但某些字段被新值替换。由于所有 Temporal 对象都被设计为不可变的,因此此方法本质上起到了设置月份-日期字段的作用。

没有直接的方法可以创建一个表示不同日历中相同月份-日期的新的 Temporal.PlainMonthDay 对象。因此,要替换其 calendarId 属性,您需要使用 toPlainDate() 方法将其转换为 Temporal.PlainDate 对象,更改日历,然后将其转换回来。

语法

js
with(info)
with(info, options)

参数

info

一个包含 Temporal.PlainMonthDay.from() 识别的至少一个属性(除 calendar 外)的对象:dayeraeraYearmonthmonthCodeyear。未指定的属性将使用原始月份-日期的值。当且仅当您提供 month 且日历不是 iso8601 时,您才需要提供年份。您只需要提供 monthmonthCode 中的一个,以及 eraeraYearyear 中的一个,另一个将相应更新。

options 可选

包含以下属性的对象

overflow 可选

一个字符串,指定日期组件超出范围时的行为。可能的值是

"constrain"(默认)

日期组件被限制在有效范围内。

"reject"

如果日期组件超出范围,则抛出 RangeError

返回值

一个新的 Temporal.PlainMonthDay 对象,其中 info 中指定且不为 undefined 的字段将被相应的值替换,其余字段将从原始日期复制。

异常

TypeError

在以下情况之一中抛出

  • info 不是一个对象。
  • options 不是对象或 undefined
RangeError

在以下情况之一中抛出

  • 指定相同组件的提供的属性不一致。
  • 提供的非数字属性无效;例如,如果 monthCode 在此日历中从未是有效的月份代码。
  • 提供的数字属性超出范围,并且 options.overflow 设置为 "reject"
  • 如果提供了年份,日历不是 iso8601,并且该年份不在 可表示范围(从 -271821275760)或年份内。

示例

使用 with()

js
const md = Temporal.PlainMonthDay.from("07-01");
const newMd = md.with({ day: 2 });
console.log(newMd.toString()); // "07-02"

有关更多示例,请参阅可以使用 with() 设置的各个属性的文档。

规范

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

浏览器兼容性

另见