var O = {
toString(){ return 'String' },
valueOf() { return 33}
}
console.log(""+O) //"33"
console.log(""+{a:1})//"[object Object]"
var O = {
toString(){ return 'String' },
valueOf() { return 33}
}
console.log(""+O) //"33"
console.log(""+{a:1})//"[object Object]"
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
对象转化为数值会调用valueOf,转化为字符串会调用toString
对象默认的valueOf继承于Object.prototype,并且它返回它本身
对象使用valueOf获取到的值是它本身的话,会继续使用toString获取
+
运算符会将对象转化为Number,也就是调用valueOf基于上面四点,再来看代码
1、
""+O
,调用O的valueOf,返回33,33与空字符串相加,将33转换为字符串2、
""+{a:1}
调用对象的valueOf,返回本身,再调用对象的toString,返回"[object Object]"