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外)的对象:day、era和eraYear、month、monthCode、year。未指定的属性将使用原始月份-日期的值。当且仅当您提供month且日历不是iso8601时,您才需要提供年份。您只需要提供month或monthCode中的一个,以及era或eraYear或year中的一个,另一个将相应更新。 options可选-
包含以下属性的对象
overflow可选-
一个字符串,指定日期组件超出范围时的行为。可能的值是
"constrain"(默认)-
日期组件被限制在有效范围内。
"reject"-
如果日期组件超出范围,则抛出
RangeError。
返回值
一个新的 Temporal.PlainMonthDay 对象,其中 info 中指定且不为 undefined 的字段将被相应的值替换,其余字段将从原始日期复制。
异常
TypeError-
在以下情况之一中抛出
info不是一个对象。options不是对象或undefined。
RangeError-
在以下情况之一中抛出
- 指定相同组件的提供的属性不一致。
- 提供的非数字属性无效;例如,如果
monthCode在此日历中从未是有效的月份代码。 - 提供的数字属性超出范围,并且
options.overflow设置为"reject"。 - 如果提供了年份,日历不是
iso8601,并且该年份不在 可表示范围(从-271821到275760)或年份内。
示例
使用 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 |
浏览器兼容性
加载中…