在标准JavaScript ES6环境中,何时调用.toString()?

问题描述 投票:0回答:1

我只发现调用.toString()的时间是通过字符串连接和字符串插值进行的:

// Inside of Node:

> let arr = [1,3,5];

> arr.toString()
'1,3,5'

> "" + arr
'1,3,5'

> arr + ""
'1,3,5'

> `${arr}`
'1,3,5'

[应该是console.log打印出对象的字符串表示形式,并且应该使用toString(),但是我不确定通常是否没有正确实现toString(),所以console.log做其他事情:

> console.log(arr);
[ 1, 3, 5 ]

> console.log("arr is %s", arr);
arr is [ 1, 3, 5 ]

因此在JavaScript本身中,何时调用toString()

我认为通过多态性,我们自己编写的任何东西,我们都可以使用ourObj.toString()将对象的字符串表示形式表示为字符串。但我想知道JavaScript本身(所有功能,库,类)在什么时候真正调用toString()

javascript ecmascript-6 tostring
1个回答
0
投票

在EcmaScript语言规范的多个部分中,提到了toString。一个重要的用途发生在抽象操作OrdinaryToPrimitive中:此函数将查找对象的toStringvalueOf方法并执行它。优先级可以受hint参数的影响。

反过来,OrdinaryToPrimitive由抽象操作ToPrimitive调用

ToPrimitiveToPrimitiveToNumberToString调用,关系比较,相等比较,表达式求值,ToPropertyKey构造函数,几种字符串化方法,例如Date等。

实际上,该语言充满了将要执行toJSON的内部操作。该规范有200多个参考ToPrimitive

© www.soinside.com 2019 - 2024. All rights reserved.