Temporal.Duration.prototype.with()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
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 gestaltet 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 von
Temporal.Duration.from()
anerkannten Eigenschaften enthält:years
,months
,weeks
,days
,hours
,minutes
,seconds
,milliseconds
,microseconds
,nanoseconds
. Nicht angegebene Eigenschaften verwenden die Werte aus der ursprünglichen Dauer.
Rückgabewert
Ein neues Temporal.Duration
-Objekt, bei dem die in info
angegebenen Felder, die nicht undefined
sind, durch die entsprechenden Werte ersetzt werden, und der Rest der Felder von der ursprünglichen Dauer kopiert wird.
Ausnahmen
RangeError
-
Wird in einem der folgenden Fälle ausgelöst:
- Eine der anerkannten Eigenschaften im
info
-Objekt ist keine ganze Zahl (einschließlich nicht endlicher Werte). - Eine Kalendereinheit (Jahre, Monate, Wochen) hat einen Absolutwert ≥ 232.
- Der nicht kalenderbasierte Teil der Dauer (Tage und darunter), ausgedrückt in Sekunden, hat einen Absolutwert ≥ 253.
- Eine der anerkannten Eigenschaften im
TypeError
-
Wird in einem der folgenden Fälle ausgelöst:
- Das
info
-Objekt ist kein Objekt. - Alle anerkannten Eigenschaften im
info
-Objekt sindundefined
.
- Das
Beispiele
Verwendung von with()
Sie können with()
verwenden, um eine fein abgestimmte Kontrolle über die Felder eines Temporal.Duration
-Objekts zu erreichen. Zum Beispiel 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 |