js中关于obj加法问题

今天在看《高程3》的加法部分(P48)时候看到

https://img.mukewang.com/5b835b95000183cd06120206.jpg

提到

如果一个操作数是对象...............则会调用toString方法获得相应的字符串值.

我就试了一下 以下代码

var bbb = {  i: 10,  toString: function() {    console.log('toString');    return this.i;
  },  valueOf: function() {    console.log('valueOf');    return this.i;
  }
}

bbb + 1// valueOf 11bbb + '1' // valueOf 101

为什么不是我预想的 toString,而是执行了 valueOf。 是我理解错了吗?


交互式爱情
浏览 703回答 2
2回答

三国纷争

那是因为你valueOf直接是基本类型,所以不需要toString。你改成这样就发现会先valueOf,然后还会toString。  valueOf: function() {    console.log('valueOf');    return this;   }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript