国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

JS判斷數(shù)組的六種方法詳解

xiaoxiaozi / 400人閱讀

摘要:對(duì)象構(gòu)造函數(shù)的判斷用法的每個(gè)實(shí)例都有構(gòu)造函數(shù),用于保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)如上所示,的實(shí)例的跟對(duì)象是相等的那么我們就可以用此來(lái)判斷數(shù)組了原型鏈上的用法屬性表示構(gòu)造函數(shù)的原型其中有一個(gè)方法是用于測(cè)試一個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈上。

在JS中,數(shù)組是屬于Object類(lèi)型的,也就是屬于引用類(lèi)型(引用類(lèi)型存放在堆內(nèi)存中,在棧內(nèi)存會(huì)有一個(gè)或者多個(gè)地址來(lái)指向這個(gè)堆內(nèi)存)。

所以對(duì)于引用類(lèi)型,我們不能typeof來(lái)判斷具體的類(lèi)型,因?yàn)榉祷氐亩际恰畂bject’。

接下來(lái),我將介紹六種判斷方法,并且對(duì)這六種方法進(jìn)行逐一解析

① instanceof 操作符判斷

用法:arr instanceof Array
instanceof 主要是用來(lái)判斷某個(gè)實(shí)例是否屬于某個(gè)對(duì)象

function obj(){}
let o1 = new obj();
console.log(o1 instanceof obj);  // true

那么我們用instanceof 來(lái)判斷數(shù)組的方法如下:

let arr = [];
console.log(arr instanceof Array); // true
但是?instanceof?會(huì)有一個(gè)問(wèn)題,它的問(wèn)題在于假定只有一個(gè)全局執(zhí)行的環(huán)境。如果網(wǎng)頁(yè)中包含多個(gè)框架,那實(shí)際上就存在兩個(gè)以上不同的全局執(zhí)行環(huán)境從而存在兩個(gè)以上不同版本的Array構(gòu)造函數(shù)。如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,那么傳入的數(shù)組與在第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有不同的構(gòu)造函數(shù)。
②對(duì)象構(gòu)造函數(shù)的 constructor判斷

用法:arr.constructor === Array
Object的每個(gè)實(shí)例都有構(gòu)造函數(shù) constructor,用于保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)

function obj(){}
let o1 = new obj();
console.log(o1.constructor === obj);  // true

如上所示,obj 的實(shí)例 o1 的 constructor 跟 obj 對(duì)象是相等的
那么我們就可以用此來(lái)判斷數(shù)組了

let arr = [];
console.log(arr.constructor === Array); // true
③Array?原型鏈上的 isPrototypeOf

用法:Array.prototype.isPrototypeOf(arr)
Array.prototype ?屬性表示 Array 構(gòu)造函數(shù)的原型
其中有一個(gè)方法是 isPrototypeOf() 用于測(cè)試一個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈上。

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

用法:Object.getPrototypeOf(arr) === Array.prototype
Object.getPrototypeOf() 方法返回指定對(duì)象的原型

所以只要跟Array的原型比較即可

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

用法:Object.prototype.toString.call(arr) === "[object Array]"

雖然Array也繼承自O(shè)bject,但js在Array.prototype上重寫(xiě)了toString,而我們通過(guò)toString.call(arr)實(shí)際上是通過(guò)原型鏈調(diào)用了。

let arr = [];
console.log(Object.prototype.toString.call(arr) === "[object Array]"); // true
⑥Array.isArray

用法:Array.isArray(arr)
ES5中新增了Array.isArray方法,IE8及以下不支持

Array.isArray ( arg )
isArray 函數(shù)需要一個(gè)參數(shù) arg,如果參數(shù)是個(gè)對(duì)象并且 class 內(nèi)部屬性是 "Array", 返回布爾值 true;否則它返回 false。采用如下步驟:
? ? ? ? ?? 如果 Type(arg) 不是 Object, 返回 false。
? ? ? ? ? ?如果 arg 的 [[Class]] 內(nèi)部屬性值是 "Array", 則返回 true。
? ? ? ? ? ?返回 false.

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/100773.html

相關(guān)文章

  • 區(qū)別對(duì)象和數(shù)組六種方法

    摘要:區(qū)別對(duì)象和數(shù)組的六種方法方法一利用方法通過(guò)調(diào)用方法試著將該變量轉(zhuǎn)化為代表其類(lèi)型的。該方法對(duì)于真正的可行參數(shù)對(duì)象轉(zhuǎn)化為時(shí)返回會(huì)轉(zhuǎn)化失敗此外,對(duì)于含有數(shù)字長(zhǎng)度屬性的類(lèi)也會(huì)轉(zhuǎn)化失敗。 區(qū)別對(duì)象和數(shù)組的六種方法(1)方法一:利用toString方法通過(guò)調(diào)用toString( )方法試著將該變量轉(zhuǎn)化為代表其類(lèi)型的string。該方法對(duì)于真正的array可行;參數(shù)對(duì)象轉(zhuǎn)化為string時(shí)返回[ob...

    senntyou 評(píng)論0 收藏0
  • Javascript中數(shù)組去重六種方法

    摘要:數(shù)組去重第一種方法先對(duì)數(shù)組進(jìn)行排序,排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的相同的位置,,但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把的值減一。 數(shù)組去重 第一種方法: 先對(duì)數(shù)組進(jìn)行排序sort(),排好序,然后把數(shù)組的當(dāng)前項(xiàng)和后一項(xiàng)進(jìn)行比較,相同則使用數(shù)組的splice(相同的位置,1),但是為了防止數(shù)組塌陷,每次刪除數(shù)組元素的時(shí)候要把i的值減一。 ...

    CodeSheep 評(píng)論0 收藏0
  • JavaScript六種基本數(shù)據(jù)類(lèi)型

    摘要:數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型指的就是字面量類(lèi)型在中一共有六種數(shù)據(jù)類(lèi)型字符串?dāng)?shù)值布爾值空值未定義對(duì)象其中屬于基本數(shù)據(jù)類(lèi)型而屬于引用數(shù)據(jù)類(lèi)型字符串在中使用字符串需要使用引號(hào)括起來(lái)使用雙引號(hào)或單引號(hào)都可以不能混合使用引號(hào)不能嵌套數(shù)值型在中所有數(shù)值類(lèi)型都 ?? ? ? ???????????????????? ???????數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型指的就是字面量類(lèi)型 在JS中一共有六種數(shù)據(jù)類(lèi)型 ...

    CollinPeng 評(píng)論0 收藏0
  • JS基礎(chǔ)知識(shí)回顧-1

    摘要:原始類(lèi)型數(shù)組,循環(huán)變量不能以數(shù)字開(kāi)頭,因?yàn)槿绻@樣編譯器則無(wú)法區(qū)別數(shù)字和變量??梢灾苯有薷臄?shù)組的值如就變成了輸出為循環(huán)和判斷 Part1 原始類(lèi)型,數(shù)組,循環(huán) Variables 變量不能以數(shù)字開(kāi)頭,因?yàn)槿绻@樣編譯器則無(wú)法區(qū)別數(shù)字和變量。 養(yǎng)成好習(xí)慣每句話后面加分號(hào) Primitive data types 包括Number,String, Boolean, Undefined...

    CoorChice 評(píng)論0 收藏0
  • Zepto 源碼分析 4 - 核心模塊入口

    摘要:對(duì)象構(gòu)造函數(shù)讀入的兩個(gè)參數(shù)與在中也有明確的規(guī)范,用以保證構(gòu)造函數(shù)的簡(jiǎn)單性。 承接第三篇末尾內(nèi)容,本篇結(jié)合官方 API 進(jìn)入對(duì) Zepto 核心的分析,開(kāi)始難度會(huì)比較大,需要重點(diǎn)理解幾個(gè)核心對(duì)象的關(guān)系,方能找到線索。 $() 與 Z 對(duì)象創(chuàng)建 Zepto Core API 的首個(gè)方法 $() 按照其官方解釋?zhuān)?Create a Zepto collection object by pe...

    xzavier 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<