js判斷乙個物件為陣列的方法

2021-07-14 00:14:17 字數 1643 閱讀 9195

陣列物件

js的陣列是無型別的:陣列元素可以是任意型別,並且同乙個陣列中的不同元素也可能有不同的型別。陣列的元素可以是物件或其他陣列,這樣就可以建立複雜的資料結構。

通常我們可以用一元運算子typeof來判斷js的資料型別,但是對於陣列這樣乙個特殊的物件卻只能返回"object"

typeof [1,2,3]

"object"

typeof

100"number"

typeof

false

"boolean"

typeof

undefined

"undefined"

typeof

nan"number"

typeof

function

(){}

"function"

typeof

null

"object"

判斷陣列的方法
[1,2] instanceof

array

true

array.isarray([1,2])

true

如果頁面裡面有n個frame,就存在多個window,每個window都有自己的array物件,比如確定子window裡的某個陣列是不是array時,用instanceof這個方法就不行了
var fr=window.frames[0];

fr.onload=function

()

object.prototype

.tostring

.call([1,2])

"[object array]"

[1,2].constructor.name==='array';

true

但是物件的constructor屬性可以被改寫,改寫後用改方法判斷就不行了
var arr=[1,2];

arr.constructor={};

arr.constructor.name === "array"

//undefined

false

var c=[1,2];

c.push('3');//

3console.log(c)

[1, 2, "3"]

var c="12";

c.push('3');

//uncaught typeerror: c.push is

not a function(…)

var c=[1,2];

c.join('');

"12"

var c='12';

c.join('');

//uncaught typeerror: c.join is

not a function(…)

總結

通過上面的幾種判斷物件為陣列物件的方法分析,使用array.isarray(arr)和oblect.prototype.tostring.call(arr)是比較好的方法。

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

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

js判斷乙個變數是否為陣列

var ary 1,23,4 console.log ary.proto constructor array true console.log ary.constructor array true 這兩段 是一樣的有侷限性 var ary 1,23,4 console.log ary instanc...

判斷乙個js變數是否為陣列

今天小編給大家整理些關於j ascript判斷變數是否是陣列 array 的相關知識,主要通過以下四點給大家展開話題,具體內容如下所示 1.typeof真的那麼厲害嗎?首先看 var ary 1,23,4 console.log typeof ary 輸出結果是object上面的辦法並不能實時的檢測...