这道题考的是类型转换。V8 会提供了一个 ToPrimitve 方法,该方法可以修改原始值,先检测该对象中是否存在 valueOf 方法,如果有并返回了原始类型,那么就使用该值进行强制类型转换;如果 valueOf 没有返回原始类型,就会调用 toString 方法的返回值;如果 vauleOf 和 toString 两个方法都不返回基本类型值,便会触发一个 TypeError 的错误。
所以这道题可以这样
var a={x:1,
valueOf(){
return this.x++;
}}
也可以使用toString
var a={x:1,
toString(){
return this.x++;
}}
都是一样的结果