JS 中檢測數組的四種方法

今天和你們分享一下 JS 中檢測是否是數組的四種方法,雖然篇幅不長,不過方法應該算是比較全面了。數組

1. instanceof 方法

instanceof 用於檢測一個對象是否是某個類的實例,數組也是一種對象因此也能夠利用 instaceof 來進行判斷。瀏覽器

let arr = [1, 2, 3];
console.log(arr.instanceof(Array)); // true

這種方法在只有一個全局做用域的環境下是能夠的,可是若是一個網頁中包含多個框架,那麼就會存在不一樣的全局環境,不一樣的環境 Array 構造函數是不一樣的,因此要在兩個框架下傳遞數組時就會出現問題,在某個框架裏檢測出來是數組可是在另外一個框架裏檢測出來並非數組。框架

2. Array.isArray 方法

isArray 方法用於肯定一個值究竟是不是數組,無論是在哪一個環境下都是能夠的。不過這個方法在低版本的 IE 的瀏覽器中是不支持的。函數

let arr = [1, 2, 3];
console.log(Array.isArray(arr));

3. 數組構造函數

在建立數組時可使用 let arr = new Array() 的形式,反過來咱們也能夠利用 constructor 屬性來獲取它的構造函數根據是否是 Array 來判斷一個值是否是數組。prototype

let arr = [1, 2, 3];
console.log(arr.constructor === Array) // true

這種方法和方法 1 有相同的缺點,在多個環境下 Array 構造函數有多是不一樣的,並且在多個環境下若是要進行數組傳遞的話頗有可能會出現問題。code

4. Object.prototype.toString.call() 方法

咱們知道,在任何值上調用 Object 原生的 toString 方法,都會返回 [object NativeConstructorName] 格式的字符串,利用這一點也能夠用來檢測是否是數組。對象

let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr) === "[object Array]"); // true

因爲原生數組的構造函數名與全局環境無關,所以不管在哪個環境下這個方法均可以正確的檢測一個數組。作用域

注意:方法 1 和 方法 3 中的 Array 是 window 的屬性。字符串

完,若有不恰當之處歡迎指正哦。string

相關文章
相關標籤/搜索