首先我们要知道,在 JS 中类型转换只有三种情况,分别是:
转换为布尔值
转换为数字
转换为字符串
如果已经是原始类型了,那就不需要转换了
调用 x.valueOf()
,如果转换为基础类型,就返回转换的值
调用 x.toString()
,如果转换为基础类型,就返回转换的值
如果都没有返回原始类型,就会报错
当然你也可以重写 Symbol.toPrimitive
,该方法在转原始类型时调用优先级最高。
let a = {
valueOf() {
return 0
},
toString() {
return ‘1‘
},
[Symbol.toPrimitive]() {
return 2
}
}
1 + a // => 3
原文:https://www.cnblogs.com/-Miya/p/10742467.html