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 durch neue Werte ersetzten Feldern darstellt. Da alle Temporal
Objekte so gestaltet sind, dass sie unveränderlich sind, funktioniert 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 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 die restlichen Felder aus der ursprünglichen Dauer kopiert werden.
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 absoluten Wert ≥ 232.
- Der nicht-kalenderbezogene Teil der Dauer (Tage und darunter), wenn er in Sekunden ausgedrückt wird, hat einen absoluten Wert ≥ 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. Beispielsweise können Sie eine Dauer nur auf einer Einheit manuell 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 proposal # sec-temporal.duration.prototype.with |
Browser-Kompatibilität
BCD tables only load in the browser