區(qū)分 javascript 中的 array 和 object 有四種方法:array.isarray() 方法直接檢查變量是否為數(shù)組。instanceof 運(yùn)算符檢查變量是否為 array 實(shí)例。object.prototype.tostring.call() 方法返回?cái)?shù)組的類型描述符。數(shù)組具有 length 屬性,而對(duì)象沒有。
如何用 JavaScript 區(qū)分 Array 和 Object
簡(jiǎn)介
在 JavaScript 中,Array 和 Object 是兩種數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)和整理數(shù)據(jù)。盡管它們具有相似之處,但它們本質(zhì)上還是不同的數(shù)據(jù)類型,在某些情況下需要加以區(qū)分。
區(qū)分方法
1. Array.isArray() 方法:
用于直接檢查變量是否是 Array,返回布爾值。
2. instanceof 運(yùn)算符:
檢查變量是否為 Array(或任何其他類)的實(shí)例。
3. Object.prototype.toString.call() 方法:
返回對(duì)象的類型描述符,對(duì)于數(shù)組會(huì)返回 “[object Array]”。
4. 檢查對(duì)象是否具有 length 屬性:
數(shù)組具有 length 屬性,而對(duì)象沒有。
詳細(xì)說明
Array.isArray() 方法:
let arr = [1, 2, 3]; console.log(Array.isArray(arr)); // true
登錄后復(fù)制
instanceof 運(yùn)算符:
let arr = [1, 2, 3]; console.log(arr instanceof Array); // true
登錄后復(fù)制
Object.prototype.toString.call() 方法:
let arr = [1, 2, 3]; console.log(Object.prototype.toString.call(arr)); // "[object Array]"
登錄后復(fù)制
檢查 length 屬性:
let arr = [1, 2, 3]; console.log(arr.hasOwnProperty("length")); // true let obj = { name: "John" }; console.log(obj.hasOwnProperty("length")); // false
登錄后復(fù)制
要注意的特殊情況
繼承自 Array 的自定義對(duì)象或類也可以通過 Array.isArray() 和 instanceof 檢查。
類似地,某些庫或框架可能會(huì)提供類似于 Array 的對(duì)象,因此使用 Object.prototype.toString.call() 方法可能更可靠。