Temporal.Duration.prototype.valueOf()
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 valueOf() của các instance Temporal.Duration ném ra TypeError, ngăn các instance Temporal.Duration bị chuyển đổi ngầm định sang kiểu nguyên thủy khi được sử dụng trong các phép tính số học hoặc so sánh.
Cú pháp
valueOf()
Tham số
Không có.
Giá trị trả về
Không có.
Ngoại lệ
TypeError-
Luôn luôn được ném ra.
Mô tả
Vì cả chuyển đổi nguyên thủy lẫn chuyển đổi số đều gọi valueOf() trước toString(), nếu valueOf() vắng mặt, thì một biểu thức như duration1 > duration2 sẽ ngầm định so sánh chúng dưới dạng chuỗi, điều này có thể có các kết quả không mong đợi như "PT3S" > "PT1M". Bằng cách ném TypeError, các instance Temporal.Duration ngăn chặn các chuyển đổi ngầm định như vậy. Bạn cần chuyển đổi chúng sang số một cách tường minh bằng Temporal.Duration.prototype.total(), hoặc sử dụng phương thức tĩnh Temporal.Duration.compare() để so sánh chúng.
Ví dụ
>Các phép tính số học và so sánh trên Temporal.Duration
Tất cả các phép tính số học và so sánh trên các instance Temporal.Duration nên sử dụng các phương thức chuyên dụng hoặc chuyển đổi chúng sang kiểu nguyên thủy một cách tường minh.
const duration1 = Temporal.Duration.from({ seconds: 3 });
const duration2 = Temporal.Duration.from({ minutes: 1 });
duration1 > duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") > duration2.total("seconds"); // false
Temporal.Duration.compare(duration1, duration2); // -1
duration1 + duration2; // TypeError: can't convert Duration to primitive type
duration1.total("seconds") + duration2.total("seconds"); // 63
duration1.add(duration2).toString(); // "PT1M3S"
Đặc tả
| Thông số kỹ thuật |
|---|
| Temporal> # sec-temporal.duration.prototype.valueof> |