JS數(shù)組類型檢測

假定一個數(shù)組:

const arr = [1, 2, 3]

方式一

通過 Object.prototype.toString

function isArray(arr) {
  Object.prototype.toString.call(arr) === '[object Array]'
}

console.log(isArray(arr)) // true

缺點:利用 toStringTag 更改字符值斑粱,可造成誤判

const obj = {
  [Symbol.toStringTag]: 'Array'
}

console.log(isArray(obj)) // true

console.log(Object.prototype.toString.call(obj)) // [object Array]


方式二

通過 instanceof

function isArray(arr) {
  return arr instanceof Array
}

console.log(isArray(arr)) // true

缺點:
1、通過** setPrototypeOf**更改原型怀樟,可造成誤判

const obj = {}

Object.setPrototypeOf(obj, Array.prototype)

console.log(isArray(obj)) // true

2末盔、在iframe環(huán)境構造筑舅,會存在誤判

/** 獲取頁面上的iframe */
const iframe = document.querySelect('iframe')

/** 獲取iframe環(huán)境下的構造函數(shù) */
const Array2 = iframe.content Window.Array

/** 創(chuàng)建數(shù)組 */
const arr2 = new Array2()

console.log(isArray(arr2)) // false


方式三(推薦)

通過 Array.isArray()

console.log(Array.isArray(arr)) // true

// 檢測方式二中的obj
console.log(isArray(obj)) // false

// 檢測方式三中的arr2
console.log(isArray(arr2)) // true

原理:通過檢測是否經(jīng)過Array的構造函數(shù) f Array() { native code}

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陨舱,隨后出現(xiàn)的幾起案子翠拣,更是在濱河造成了極大的恐慌,老刑警劉巖游盲,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件心剥,死亡現(xiàn)場離奇詭異,居然都是意外死亡背桐,警方通過查閱死者的電腦和手機优烧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來链峭,“玉大人畦娄,你說我怎么就攤上這事。” “怎么了熙卡?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵杖刷,是天一觀的道長。 經(jīng)常有香客問我驳癌,道長滑燃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任颓鲜,我火速辦了婚禮表窘,結果婚禮上,老公的妹妹穿的比我還像新娘甜滨。我一直安慰自己乐严,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布衣摩。 她就那樣靜靜地躺著昂验,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艾扮。 梳的紋絲不亂的頭發(fā)上既琴,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音泡嘴,去河邊找鬼呛梆。 笑死,一個胖子當著我的面吹牛磕诊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纹腌,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼霎终,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了升薯?” 一聲冷哼從身側響起莱褒,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涎劈,沒想到半個月后广凸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蛛枚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年谅海,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蹦浦。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡扭吁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情侥袜,我是刑警寧澤蝌诡,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站枫吧,受9級特大地震影響浦旱,放射性物質發(fā)生泄漏。R本人自食惡果不足惜九杂,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一颁湖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尼酿,春花似錦爷狈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹿响,卻和暖如春羡微,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惶我。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工妈倔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绸贡。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓盯蝴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親听怕。 傳聞我的和親對象是個殘疾皇子捧挺,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容