如何準確判斷乙個物件時陣列

2021-10-06 16:28:12 字數 1739 閱讀 3630

var a =[1

,2,3

];

instanceof 操作符和物件的 construct 屬性

var arr =[1

,2,3

,1];

console.

log(arr instanceof

array);

// true

varfun

=function()

;console.

log(fun instanceof

function);

// true

var arr =[1

,2,3

,1];

console.

log(arr.constructor === array)

;// true

varfun

=function()

;console.

log(arr.constructor === function)

;// true

使用原型鏈來判斷

[

].__proto__ === array.prototype // true

varfun

=function()

fun.__proto__ === function.prototype // true

object.prototype.tostring.call()

object.prototype.tostring.

call([

])==='[object array]'

// true

object.prototype.tostring.

call

(function()

)===

'[object function]'

// true

array.isarray()

有相容問題,ie8之前的版本是不支援的。

array.

isarray([

])// true

可以綜合上面的幾種方法,有乙個當前的判斷陣列的最佳寫法:

var arr =[1

,2,3

];var arr2 =

;function

isarrayfn

(value)

else

}console.

log(

isarrayfn

(arr));

// true

console.

log(

isarrayfn

(arr2));

// true

上述**中,為何我們不直接使用原型鏈的方式判斷(相容性好),而是先判斷瀏覽器支不支援array.isarray()這個方法,如果不支援才使用原型鏈的方式呢?我們可以從**執行效率上看,array.isarray()這個方法的執行速度比原型鏈的方式快了近一倍

判斷乙個物件是陣列還是物件

一 typeof判斷資料型別 判斷陣列跟物件都返回object console.log typeof null object console.log typeof function function console.log typeof 小a string console.log typeof1 n...

Js中如何判斷乙個物件為陣列型別

在說明如何判斷乙個物件為陣列型別前,我們先鞏固下js的資料型別,js一共有六大資料型別 number string object boolean null undefined。js的陣列是無型別的 陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,...

如何判斷乙個陣列和物件為空?

陣列一般用陣列的長度可以判斷 arr null arr.length 0如果是物件呢?有如下方法 1.把物件轉化為字串 json.stringify 然後通過判斷長度。let obj let res json.stringify obj console.log res 說明是空物件2.遍歷 let ...