ng时 先调用 toString(),再调用 valueOf()。 若两属性均无,或没有返回基本类型,则会产生类型错误 TypeError: Cannot convert object to primitive value
我们常用的类型判断方法之一Object.prototype.toString.call(val),本质就是利用了ToPrimitive(input,preferedType?)。
4-2.操作
定义 valueOf 和 toString
复杂数据类型在隐式转换时,先调用 valueOf,再调用 toString。 空数组的 toString()方法会得到空字符串,而空对象的 toString()方法会得到字符串[objectObject]
let success_unpack = {
valueOf: () => 7,
toString: () => 8,
console.log(Number(success_unpack)) // 7 Number拆箱: valueOf, toString, TypeError
console.log(String(success_unpack)) // 8 String拆箱: toString, valueOf, TypeError