Temporal.Duration.prototype.with()
Базовый уровень Ограниченная доступность
Эта функция не относится к Базовому уровню, поскольку она не работает в некоторых наиболее широко используемых браузерах.
Метод with() экземпляров Temporal.Duration возвращает новый объект Temporal.Duration, представляющий эту длительность с некоторыми полями, замененными новыми значениями. Поскольку все объекты Temporal спроектированы как неизменяемые, этот метод по существу функционирует как сеттер для полей длительности.
Синтаксис
with(info)
Параметры
-
info - Объект, содержащий хотя бы одно из свойств, распознаваемых
Temporal.Duration.from():years,months,weeks,days,hours,minutes,seconds,milliseconds,microseconds,nanoseconds. Для неуказанных свойств используются значения из исходной длительности.
Возвращаемое значение
Новый объект Temporal.Duration, в котором поля, указанные в info, которые не являются undefined, заменяются соответствующими значениями, а остальные поля копируются из исходной длительности.
Исключения
-
RangeError - Генерируется в одном из следующих случаев:
- Любое из распознаваемых свойств в объекте
infoне является целым числом (включая не конечные значения). - Календарная единица (годы, месяцы, недели) имеет абсолютное значение ≥ 232.
- Некалендарная часть длительности (дни и ниже), выраженная в секундах, имеет абсолютное значение ≥ 253.
- Любое из распознаваемых свойств в объекте
-
TypeError - Генерируется в одном из следующих случаев:
- Объект
infoне является объектом. - Все распознанные свойства в объекте
infoявляютсяundefined.
- Объект
Примеры
Использование with()
Вы можете использовать with() для достижения точного контроля над полями объекта Temporal.Duration. Например, вы можете вручную сбалансировать длительность только по одной единице, чего round() не предлагает:
function balanceMinutes(duration) {
const { hours, minutes } = duration;
const totalMinutes = hours * 60 + minutes;
const balancedMinutes = totalMinutes % 60;
const balancedHours = (totalMinutes - balancedMinutes) / 60;
return duration.with({ hours: balancedHours, minutes: balancedMinutes });
}
const d1 = Temporal.Duration.from({ hours: 100, minutes: 100, seconds: 100 });
const d2 = balanceMinutes(d1);
console.log(d2.hours); // 101
console.log(d2.minutes); // 40
console.log(d2.seconds); // 100; remains unbalanced
Спецификации
| Спецификация |
|---|
| Temporal # sec-temporal.duration.prototype.with |
Совместимость с браузерами
| Десктоп | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
with |
144 |
144 |
139 |
128 |
preview |
144 |
139 |
95 |
No |
No |
144 |
No |
1.4.0 |
2.7 |
26.0.0 |
См. также
Temporal.DurationTemporal.Duration.from()Temporal.Duration.prototype.add()Temporal.Duration.prototype.subtract()Temporal.Duration.prototype.round()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Duration/with