为什么用Object.prototype.toString.call(obj)检测对象类型?

1.用typeof不能判断一个对象变量,因为null和数组的结果也是object。

2.xxx.toString方法返回反映这个对象的字符串。

3.不能直接使用obj.toString()的原因,因为toString为Object的原型方法,而Array、Function等类型作为Object的实例,都重写了toString方法。不用的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(Function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串),而不会去调用Object上原型toString方法。

4.通过call将Array的this上下文切换到Object,从而调用了Object.prototype.toString()。

 

参考链接:https://www.cnblogs.com/youhong/p/6209054.html

posted @ 2019-06-26 16:05  惊沙男孩  阅读(363)  评论(0编辑  收藏  举报