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

js
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.
TypeError

Wird in einem der folgenden Fälle ausgelöst:

  • Das info Objekt ist kein Objekt.
  • Alle anerkannten Eigenschaften im info Objekt sind undefined.

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:

js
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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
with
Experimental

Legend

Tip: you can click/tap on a cell for more information.

In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
User must explicitly enable this feature.

Siehe auch