Temporal.Duration.prototype.with()
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Phương thức with() của các instance Temporal.Duration trả về một đối tượng Temporal.Duration mới biểu diễn duration này với một số trường được thay thế bằng các giá trị mới. Vì tất cả các đối tượng Temporal được thiết kế để bất biến, phương thức này về cơ bản hoạt động như setter cho các trường của duration.
Cú pháp
with(info)
Tham số
info-
Một đối tượng chứa ít nhất một trong các thuộc tính được nhận bởi
Temporal.Duration.from():years,months,weeks,days,hours,minutes,seconds,milliseconds,microseconds,nanoseconds. Các thuộc tính không được chỉ định sẽ sử dụng các giá trị từ duration gốc.
Giá trị trả về
Một đối tượng Temporal.Duration mới, trong đó các trường được chỉ định trong info mà không phải undefined được thay thế bằng các giá trị tương ứng, và phần còn lại của các trường được sao chép từ duration gốc.
Ngoại lệ
RangeError-
Được ném ra trong một trong các trường hợp sau:
- Bất kỳ thuộc tính nào được nhận trong đối tượng
infokhông phải là số nguyên (bao gồm cả các giá trị không hữu hạn). - Một đơn vị lịch (years, months, weeks) có giá trị tuyệt đối ≥ 232.
- Phần không phải lịch của duration (days trở xuống), khi biểu diễn bằng giây, có giá trị tuyệt đối ≥ 253.
- Bất kỳ thuộc tính nào được nhận trong đối tượng
TypeError-
Được ném ra trong một trong các trường hợp sau:
- Đối tượng
infokhông phải là một đối tượng. - Tất cả các thuộc tính được nhận trong đối tượng
infođều làundefined.
- Đối tượng
Ví dụ
>Sử dụng with()
Bạn có thể sử dụng with() để kiểm soát chi tiết các trường của đối tượng Temporal.Duration. Ví dụ, bạn có thể cân bằng thủ công một duration chỉ trên một đơn vị, điều mà round() không cung cấp:
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; vẫn chưa được cân bằng
Đặc tả
| Thông số kỹ thuật |
|---|
| Temporal> # sec-temporal.duration.prototype.with> |