JavaScript三種區分對象和數組的方法介紹

解決問題時有時會碰到需要區分是對象還是數組的問題。

下面介紹三種方法:

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的瞭?因為它顯示的最清楚,不同的對象調用時,返回的結果不同。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *