JavaScript 判斷陣列和物件
阿新 • • 發佈:2019-01-30
有時候,我們需要識別一個變數是陣列還是物件,例如進行深拷貝時。
這裡提供三種方法識別陣列還是物件。
1. Array.isArray()
Array.isArray() 用於確定傳遞的值是否是一個Array。
2. constructor
陣列的建構函式是Array(),而物件的建構函式是Object()。所以我們判斷一個變數是陣列還是物件可以檢視它的建構函式。
3. instanceof
補充:A instanceof B 判斷A的原型鏈上是否有B的原型
比如 陣列[1,2]的原型鏈上有Array和Object,所以[1,2] instanceof Array,[1,2] instanceof Object都會返回true
而物件{'a':123}的原型鏈上只有Object,所以{'a':123} instanceof Array會返回false,而{'a':123} instanceof Object會返回true
所以我們判斷一個變數是陣列還是物件可以檢視它的原型鏈上是否有Array。
4. Object.prototype.toString.call()
通過改變toString函式中this的指向,判斷引數的型別
注意:在跨域判斷時,instanceof 會失效,toString 方法有效