toString方法的仔细了解

By hiluluke on

因子

在看Zepto源码的时候发现它做类型判断的时候用的下面的方法:

1
2
3
4
5
6
7
var a = {},
toString = a.toString;

toString.call(function(){}); // [object Function]
toString.call({}); // [object Object]
toString.call(123); // [object Number]
toString.call("sasa"); // [object String]

上面这个判断类型的方法好像在js高程中好像看见过,不过忘了。然后让我对toString这个方法产生了好奇心,于是去多了解了下。

所有类型调用toString()的返回值

类型返回值
对象[object Obejct] 后面那个只为具体的对象
数组逗号间隔的字符串
字符串返回原字符串
函数返回函数字符串
数字数字字符串
正则返回
Math 对象[object Obejct]
Date完整的时间字符串
boolen字符串的原值

call改变引用对象后是咋样?

那对于其他的toString在通过call和apply改变this之后会是怎样呢?
我发现有些类型是这样的:

而有些类型像对象的一样返回[object xxxxx]

我试了试是不是引用类型和基本类型的区分。。。发现不是。不区分完了。还有其他事。