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 |
浏览器兼容性
加载中…