最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript判斷數(shù)組的方法總結(jié)與推薦

 更新時(shí)間:2022年02月16日 10:08:28   作者:前端阿飛  
這篇文章主要給大家介紹了關(guān)于JavaScript判斷數(shù)組方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

無(wú)論在工作還是面試中,我們都會(huì)遇到判斷一個(gè)數(shù)據(jù)是否為數(shù)組的需求,今天我們就來(lái)總結(jié)一下,到底有多少方法可以判斷數(shù)組,看看哪種方法是最好用、最靠譜的。

我們從媽媽、爸爸、祖先三個(gè)角度來(lái)進(jìn)行判斷。

根據(jù)構(gòu)造函數(shù)判斷(媽媽)

instanceof

判斷一個(gè)實(shí)例是否屬于某構(gòu)造函數(shù)

let arr = []
console.log(arr instanceof Array) // true

缺點(diǎn): instanceof 底層原理是檢測(cè)構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在某個(gè)實(shí)例的原型鏈上,如果實(shí)例的原型鏈發(fā)生變化,則無(wú)法做出正確判斷。

let arr = []
arr.__proto__ = function() {}
console.log(arr instanceof Array) // false

constructor

實(shí)例的構(gòu)造函數(shù)屬性 constructor 指向構(gòu)造函數(shù)本身。

let arr = []
console.log(arr.constructor === Array) // true

缺點(diǎn): 如果 arr 的 constructor 被修改,則無(wú)法做出正確判斷。

let arr = []
arr.constructor = function() {}
console.log(arr.constructor === Array) // false

根據(jù)原型對(duì)象判斷(爸爸)

__ proto __

實(shí)例的 __ proto __ 指向構(gòu)造函數(shù)的原型對(duì)象

let arr = []
console.log(arr.__proto__ === Array.prototype) // true

缺點(diǎn):  如果實(shí)例的原型鏈的被修改,則無(wú)法做出正確判斷。

let arr = []
arr.__proto__ = function() {}
console.log(arr.__proto__ === Array.prototype) // false

Object.getPrototypeOf()

Object 自帶的方法,獲取某個(gè)對(duì)象所屬的原型對(duì)象

let arr = []
console.log(Object.getPrototypeOf(arr) === Array.prototype) // true

缺點(diǎn):  同上

Array.prototype.isPrototypeOf()

Array 原型對(duì)象的方法,判斷其是不是某個(gè)對(duì)象的原型對(duì)象

let arr = []
console.log(Array.prototype.isPrototypeOf(arr)) // true

缺點(diǎn):  同上

根據(jù) Object 的原型對(duì)象判斷(祖先)

Object.prototype.toString.call()

Object 的原型對(duì)象上有一個(gè) toString 方法,toString 方法默認(rèn)被所有對(duì)象繼承,返回 "[object type]" 字符串。但此方法經(jīng)常被原型鏈上的同名方法覆蓋,需要通過(guò) Object.prototype.toString.call() 強(qiáng)行調(diào)用。

let arr = []
console.log(Object.prototype.toString.call(arr) === '[object Array]') // true

這個(gè)類型就像胎記,一出生就刻在了身上,因此修改原型鏈不會(huì)對(duì)它造成任何影響。

let arr = []
arr.__proto__ = function() {}
console.log(Object.prototype.toString.call(arr) === '[object Array]') // true

Array.isArray()

Array.isArray() 是 ES6 新增的方法,專門(mén)用于數(shù)組類型判斷,原理同上。

let arr = []
console.log(Array.isArray(arr)) // true

修改原型鏈不會(huì)對(duì)它造成任何影響。

let arr = []
arr.__proto__ = function() {}
console.log(Array.isArray(arr)) // true

總結(jié)

以上就是判斷是否為數(shù)組的常用方法,相信不用說(shuō)大家也看出來(lái) Array.isArray 最好用、最靠譜了吧,還是ES6香!

到此這篇關(guān)于JavaScript判斷數(shù)組方法的文章就介紹到這了,更多相關(guān)JavaScript判斷數(shù)組方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

郧西县| 庄河市| 永泰县| 精河县| 浑源县| 遂溪县| 古交市| 靖宇县| 铜川市| 宣城市| 昌乐县| 保山市| 乌恰县| 武功县| 嘉善县| 沧州市| 游戏| 惠来县| 安陆市| 惠州市| 丹巴县| 封丘县| 大新县| 会宁县| 卓尼县| 侯马市| 边坝县| 区。| 长垣县| 青冈县| 冕宁县| 华安县| 长汀县| 大渡口区| 乌兰县| 沅江市| 灌云县| 琼结县| 和顺县| 大邑县| 浪卡子县|