解决问题时有时会碰到需要区分是对象还是数组的问题。
下面介绍三种方法:
1:constructor
var obj={}; var arr=[];
我可以直接调用constructor属性来看一下它们的构造函数。
2:instanceof
A instanceof B 判断A的原型链上面有没有B的原型
很明显 obj上面没有Array原型,但是arr有
3 Object.prototype.toString.call()
toString()方法本身是对象.toString()调用的,不同对象调用时,方法也不一样,所以我们就肯定猜测toString()里面一定有this来判断调用者的类型,然后调用对应的toString()函数,而call正好可以改变内部this指向的对象。
那么为什么要用Object.prototype的了?因为它显示的最清楚,不同的对象调用时,返回的结果不同。