Date.prototype[Symbol.toPrimitive]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.
Phương thức [Symbol.toPrimitive]() của các instance Date trả về một giá trị nguyên thủy đại diện cho ngày này. Nó có thể là một chuỗi hoặc một số, tùy thuộc vào gợi ý được cung cấp.
Try it
// Depending on timezone, your results will vary
const date = new Date("20 December 2019 14:48");
console.log(date[Symbol.toPrimitive]("string"));
// Expected output: "Fri Dec 20 2019 14:48:00 GMT+0530 (India Standard Time)"
console.log(date[Symbol.toPrimitive]("number"));
// Expected output: 1576833480000
Cú pháp
date[Symbol.toPrimitive](hint)
Tham số
hint-
Một chuỗi đại diện cho kiểu giá trị nguyên thủy cần trả về. Các giá trị hợp lệ như sau:
"string"hoặc"default": Phương thức nên trả về một chuỗi."number": Phương thức nên trả về một số.
Giá trị trả về
Nếu hint là "string" hoặc "default", phương thức này trả về một chuỗi bằng cách ép kiểu giá trị this thành chuỗi (thử toString() trước rồi thử valueOf()).
Nếu hint là "number", phương thức này trả về một số bằng cách ép kiểu giá trị this thành số (thử valueOf() trước rồi thử toString()).
Ngoại lệ
TypeError-
Ném ra nếu đối số
hintkhông phải là một trong ba giá trị hợp lệ.
Mô tả
Phương thức [Symbol.toPrimitive]() là một phần của giao thức ép kiểu. JavaScript luôn gọi phương thức [Symbol.toPrimitive]() ưu tiên để chuyển đổi một đối tượng thành giá trị nguyên thủy. Bạn hiếm khi cần tự gọi phương thức [Symbol.toPrimitive](); JavaScript tự động gọi nó khi gặp một đối tượng mà ở đó một giá trị nguyên thủy được mong đợi.
Phương thức [Symbol.toPrimitive]() của đối tượng Date trả về một giá trị nguyên thủy bằng cách gọi this.valueOf() và trả về một số, hoặc gọi this.toString() và trả về một chuỗi. Nó tồn tại để ghi đè quá trình ép kiểu nguyên thủy mặc định nhằm trả về một chuỗi thay vì một số, vì ép kiểu nguyên thủy theo mặc định gọi valueOf() trước toString(). Với [Symbol.toPrimitive]() tùy chỉnh, new Date(0) + 1 trả về "Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time)1" (một chuỗi) thay vì 1 (một số).
Ví dụ
>Sử dụng [Symbol.toPrimitive]()
const d = new Date(0); // 1970-01-01T00:00:00.000Z
d[Symbol.toPrimitive]("string"); // "Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time)"
d[Symbol.toPrimitive]("number"); // 0
d[Symbol.toPrimitive]("default"); // "Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time)"
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype-%symbol.toprimitive%> |