夜下客

繁体版 简体版
夜下客 > JS修炼法则 > 第3章 JS拆箱装箱

第3章 JS拆箱装箱

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

『加入书签,方便阅读』