解決問題時有時會碰到需要區分是對象還是數組的問題。
下面介紹三種方法:
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的瞭?因為它顯示的最清楚,不同的對象調用時,返回的結果不同。