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 July 2015.

Date 实例的 [Symbol.toPrimitive]() 方法返回表示当前日期的原始值。根据给定提示的不同,其可能是字符串或数字。

尝试一下

// 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

语法

js
date[Symbol.toPrimitive](hint)

返回值

给出的 Date 的原始值。根据传入参数的不同,可以返回 string 或 number 类型。

说明

Date 对象的 [Symbol.toPrimitive]() 方法可以返回一个原始值,或是 string,或是 number。

如果 hint"string""default"[Symbol.toPrimitive]() 将会调用 toString。如果 toString 属性不存在,则调用 valueOf。如果 valueOf 也不存在,则抛出一个TypeError

如果 hint"number"[Symbol.toPrimitive]() 会首先尝试 valueOf,若失败再尝试 toString

当期望一个原始值却收到一个对象时,JavaScript 可以自动的调用 [Symbol.toPrimitive]() 方法来将一个对象转化成原始值,所以你很少会需要自己调用这个方法。

规范

Specification
ECMAScript® 2025 Language Specification
# sec-date.prototype-%symbol.toprimitive%

浏览器兼容性

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
[Symbol.toPrimitive]

Legend

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

Full support
Full support

参见