Temporal.Duration.prototype.with()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Die with()-Methode von Temporal.Duration Instanzen gibt ein neues Temporal.Duration-Objekt zurück, das diese Dauer mit einigen Feldern darstellt, die durch neue Werte ersetzt wurden. Da alle Temporal-Objekte so konzipiert sind, dass sie unveränderlich sind, fungiert diese Methode im Wesentlichen als Setter für die Felder der Dauer.
Syntax
with(info)
Parameter
info-
Ein Objekt, das mindestens eine der Eigenschaften enthält, die von
Temporal.Duration.from()erkannt werden:years,months,weeks,days,hours,minutes,seconds,milliseconds,microseconds,nanoseconds. Nicht angegebene Eigenschaften verwenden die Werte der ursprünglichen Dauer.
Rückgabewert
Ein neues Temporal.Duration-Objekt, bei dem die im info angegebenen Felder, die nicht undefined sind, durch die entsprechenden Werte ersetzt werden und die restlichen Felder von der ursprünglichen Dauer übernommen werden.
Ausnahmen
RangeError-
Wird in einem der folgenden Fälle ausgelöst:
- Eine der erkannten Eigenschaften im
info-Objekt ist keine ganze Zahl (einschließlich nicht endlicher Werte). - Eine Kalendereinheit (Jahre, Monate, Wochen) hat einen absoluten Wert ≥ 232.
- Der nicht kalenderbezogene Teil der Dauer (Tage und darunter), ausgedrückt in Sekunden, hat einen absoluten Wert ≥ 253.
- Eine der erkannten Eigenschaften im
TypeError-
Wird in einem der folgenden Fälle ausgelöst:
- Das
info-Objekt ist kein Objekt. - Alle im
info-Objekt erkannten Eigenschaften sindundefined.
- Das
Beispiele
>Verwendung von with()
Sie können with() verwenden, um eine feingranulare Kontrolle über die Felder eines Temporal.Duration-Objekts zu erreichen. Beispielsweise können Sie eine Dauer manuell nur auf einer Einheit ausgleichen, was round() nicht bietet:
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
Spezifikationen
| Specification |
|---|
| Temporal> # sec-temporal.duration.prototype.with> |