[1,2,3].toString()和{a:10}.toString()分别打印什么,为什么

先思考🤔🤔🤔,下面有答案,然后看看你答案对了么

打印什么重要,为什么更重要

{a:10}.toString()
image.png
解析:
{a:10}.toString()这个大家熟悉么,
不熟悉,一脸懵,回顾一下
https://segmentfault.com/a/11...
这里面的判断数据类型的方法,找到感觉了没

Object.prototype.toString.call(data);

官方的定义:
每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object _type_]",其中type是对象的类型。

附上地址:https://developer.mozilla.org...

{a:10}它的类型是object,所以打印的是"[object Object]"

[1,2,3].toString()
image.png
解析:
很多人知道这个是打印1,2,3;但是看了上面的解释又会迷惑数组不也是对象么,不是应该和上面一样么,怎么误打误撞对了。你仔细品上面的定义:如果此方法在自定义对象中未被覆盖,
没错Array有自己的方法,它覆盖了Object
官方定义:
Array对象覆盖了ObjecttoString方法。对于数组对象,toString方法连接数组并返回一个字符串,其中包含用逗号分隔的每个数组元素。
[1,2,3].toString()所以打印的是====="1,2,3"

附上地址:https://developer.mozilla.org...

参考文献:
https://www.cnblogs.com/ShuiN...


kangting
62 声望3 粉丝

一只小小的前端