📅  最后修改于: 2023-12-03 14:42:28.074000             🧑  作者: Mango
在 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"
字符串。