📜  JavaScript | date.@@toPrimitive()函数(1)

📅  最后修改于: 2023-12-03 14:42:28.074000             🧑  作者: Mango

JavaScript | date.toPrimitive()函数

在 JavaScript 中,date.toPrimitive() 函数是 Date 对象的一个方法,用于将 Date 对象转换为原始值。该函数可以接受一个可选参数,该参数指定 Date 对象转换为原始类型的首选类型。

语法
date.toPrimitive(hint)
参数
  • hint:可选参数,表示 Date 对象转换为原始类型的首选类型。其取值有 "default""string""number",默认值为 "default"。如果 hint 不是这些值中的任何一个,则会抛出 TypeError 异常。
返回值

Date 对象转换为原始类型的值。如果 hint 为 "default",则 Date 对象将首先尝试将其转换为字符串,如果失败,则尝试将其转换为数字。如果 hint 为 "string",则 Date 对象将尝试将其转换为字符串。如果 hint 为 "number",则 Date 对象将尝试将其转换为数字。

示例
// 示例 1
let dateObj = new Date('December 17, 1995 03:24:00');
console.log(dateObj.toPrimitive()); // "Fri Dec 15 1995 19:24:00 GMT-0800 (Pacific Standard Time)"
console.log(dateObj.toPrimitive('string')); // "Fri Dec 15 1995 19:24:00 GMT-0800 (Pacific Standard Time)"
console.log(dateObj.toPrimitive('number')); // 819846240000

// 示例 2
let invalidObj = { toString: function () { return 'Invalid Date'; } };
console.log(new Date(invalidObj).toPrimitive()); // "Invalid Date"

在示例 1 中,我们创建了一个 Date 对象,并使用 toPrimitive() 函数将其转换为字符串和数字。使用 "default" hint,我们首先得到了一个字符串形式的日期字符串,然后再把它转换为数字。使用 "string" hint 我们得到了与默认情况下相同的结果,而使用 "number" hint 我们得到了日期的毫秒数。

在示例 2 中,我们尝试创建一个无效的 Date 对象,并使用 toPrimitive() 函数将其转换为原始类型。由于 toString() 函数返回字符串 "Invalid Date",因此 Date 对象不能正确解析,最终结果也变成了 "Invalid Date" 字符串。