檢測數組的方法

instanceof操做符
if(value instanceof Array){}
複製代碼

其實就是判斷是否是Array對象的實例,那就會有問題:javascript

  1. 若是存在兩個以上不一樣的全局執行環境,就會出現兩個以上不一樣的Array構造函數。
  2. 若是從一個全局環境建立出來的數組放到另外一個全局環境中判斷,那該數組天然就不是當前全局環境下Array構造函數的實例了。
  3. 好比iframe內嵌網頁,向內嵌網頁傳入對象判斷。
Array is Array()
if(Array is Array(value)){}
複製代碼

ECMAScript5新增了Array is Array()方法,這個方法最終的目的就是判斷是否是數組,不會考慮在哪一個全局環境。java

Object.prototype.toString.call()
Object.prototype.toString.call(value) //若是value是數組就會返回"[object Array]"
複製代碼

有時候,咱們是要判斷對象或變量是什麼類型,並不知道是否是數組,因此不會用以上兩種。而是要用上面這一種。數組

由於在任何值上面調用Object的toString方法都會返回一個[Object NativeConstructorName]格式的字符串(與全局做用域無關,返回的值能保持一致),每一個類都有一個[class]屬性,這個屬性值就是構造函數名。函數

相關文章
相關標籤/搜索