簡介
數(shù)組:值的有序集合漆羔。
元素:數(shù)組的每個值。數(shù)組元素可以是任意類型
索引:每個元素在數(shù)組中的位置验靡,以數(shù)字表示劲弦。數(shù)組索引基于零的32位數(shù)值:第一個元素的索引為0耳标,最大的索引為4 924 967 294(2^32 - 2),數(shù)組最大能容納4 924 967 295個元素邑跪。
數(shù)組長度:每個數(shù)組都有一個length屬性次坡,代表數(shù)組中元素的個數(shù)。區(qū)別于常規(guī)的JavaScript對象画畅。其值比數(shù)組中最大的索引大1砸琅。
稀疏數(shù)組:索引不連續(xù)的數(shù)組。數(shù)組元素之間可以有空缺轴踱。length屬性值大于元素的個數(shù)明棍。
JavaScript數(shù)組是JavaScript對象的特殊形式,數(shù)組索引實際上和碰巧是整數(shù)的屬性名差不多寇僧。通常,數(shù)組的實現(xiàn)是經(jīng)過優(yōu)化的沸版,用數(shù)字索引來訪問數(shù)組元素一般來說比訪問常規(guī)的對象屬性要快很多嘁傀。
創(chuàng)建數(shù)組
1. 數(shù)組直接量
在方括號中將數(shù)組元素用逗號隔開即可。
數(shù)組直接量的語法允許有可選的結(jié)尾的逗號视粮,所以细办, [,,]
只有兩個元素,length為2蕾殴。**
2. 構(gòu)造函數(shù)Array()
- 調(diào)用時沒有參數(shù):創(chuàng)建一個沒有任何元素的空數(shù)組笑撞,等同于數(shù)組直接量arrayObject。
- 調(diào)用時有一個數(shù)值參數(shù):創(chuàng)建指定長度的數(shù)組钓觉,參數(shù)即長度茴肥。生成的數(shù)組都是稀疏數(shù)組。
-
顯式指定兩個或多個數(shù)組元素或者數(shù)組的一個非數(shù)值元素:以這種形式荡灾,構(gòu)造函數(shù)的參數(shù)將會成為新數(shù)組的元素瓤狐。使用數(shù)組字面量比這樣使用
Array()
構(gòu)造函數(shù)要簡單多了瞬铸。
數(shù)組元素的讀和寫
使用[ ]操作符來訪問數(shù)組中的一個元素。數(shù)組的引用位于方括號的左邊础锐。方括號中是一個返回非負(fù)整數(shù)的任意表達(dá)式嗓节。
數(shù)組是特殊的對象。對象也可以用arrayObject來訪問對象的屬性皆警。當(dāng)使用小于232的非負(fù)整數(shù)作為屬性名時數(shù)組會自動維護其*length*屬性值拦宣。所有的索引都是屬性名,但只有0~232-1之間的整數(shù)屬性名才是索引信姓。
注意鸵隧,可以使用負(fù)數(shù)或非整數(shù)來索引數(shù)組。這種情況下财破,數(shù)值轉(zhuǎn)換為字符串掰派,字符串作為屬性名來用。名字不是非負(fù)整數(shù)左痢,只能當(dāng)做常規(guī)的對象屬性靡羡,而不是索引。如果使用非負(fù)整數(shù)的字符串俊性,就當(dāng)做索引略步,而不是對象屬性。浮點數(shù)和一個整數(shù)相等時也一樣定页。
數(shù)組索引是對象屬性名的一種特殊類型趟薄。這意味著JavaScript數(shù)組沒有“越界”錯誤。當(dāng)查詢對象中不存在的屬性時典徊,不會報錯杭煎,只會得到 undefined
值。
在ECMAScript 5中數(shù)組可以定義元素的getter和setter方法卒落。如果一個數(shù)組確實繼承了元素或使用了元素的getter和setter方法羡铲,你應(yīng)該期望他使用非優(yōu)化的代碼路徑:訪問這種數(shù)組的元素的時間會與常規(guī)對象屬性的查找時間相近。
稀疏數(shù)組
可以用 delete
操作符來生產(chǎn)稀疏數(shù)組儡毕。
足夠稀疏的數(shù)組在實現(xiàn)上比稠密的數(shù)組更慢也切、內(nèi)存利用率更高,查找元素的時間與常規(guī)對象屬性的查找時間一樣長腰湾。
注意:數(shù)組直接量中省略值時會創(chuàng)建稀疏數(shù)組雷恃。省略的元素在數(shù)組中是不存在的》逊唬可以用 in
操作符來檢測倒槐。
數(shù)組長度
設(shè)置length屬性為一個小于當(dāng)前長度的非負(fù)整數(shù)n時,當(dāng)前數(shù)組中那些索引值大于或等于n的元素將被刪除附井。
在ECMAScript 5中导犹,可以用 Object.defineProperty()
讓數(shù)組的length屬性變成只讀的唱凯。
數(shù)組元素的添加和刪除
-
添加
- 為新索引賦值
- 使用
push()
方法在數(shù)組末尾增加一個或多個元素,并返回新的長度谎痢。不創(chuàng)建新數(shù)組磕昼,能改變原數(shù)組長度。 -
unshift()
方法在數(shù)組的開頭添加一個或多個元素节猿,并且將其他元素依次移到更高的索引處票从。返回新的長度。不創(chuàng)建新數(shù)組滨嘱,能改變原數(shù)組長度峰鄙。
-
刪除
使用
delete
運算符來刪除數(shù)組元素:
刪除數(shù)組元素與為其賦undefined
值是類似的。注意:對一個數(shù)組元素使用delete
不會修改數(shù)組的length屬性太雨,也不會將其他元素從高索引處移下來填充已刪除元素留下的空白吟榴。如果從一個數(shù)組中刪除一個元素,就會變成稀疏數(shù)組囊扳。設(shè)置lenght屬性來刪除數(shù)組尾部的元素:
使用
pop()
方法(它和push()
一起使用):
該方法用于刪除并返回數(shù)組的最后一個元素吩翻。把數(shù)組長度減1,能改變數(shù)組長度锥咸。如果數(shù)組已經(jīng)為空狭瞎,則pop()
不改變數(shù)組,并返回undefined
值搏予。shift()
方法(它和unshift()
一起使用):
該方法用于把數(shù)組的第一個元素從其中刪除熊锭,并返回第一個元素的值。如果數(shù)組為空雪侥,則不進(jìn)行任何操作碗殷,返回undefined
值。該方法不創(chuàng)建新的數(shù)組速缨,能改變數(shù)組長度亿扁。-
splice()
方法:
向/從數(shù)組中添加/刪除項目,然后返回被刪除的項目鸟廓。能改變數(shù)組長度。語法:
arrayObject.splice(index,howmany,item1,...,itemx)
參數(shù) 描述 index 必需襟己。整數(shù)引谜,規(guī)定添加/刪除項目的位置,使用負(fù)數(shù)可以從數(shù)組結(jié)尾處規(guī)定位置擎浴。 howmany 必需员咽。要刪除的項目數(shù)量。如果設(shè)置為0贮预,則不會刪除項目贝室。 item1,...,itemx 可選契讲。向數(shù)組添加的新項目。 與
slice()
方法的區(qū)別:
slice()
方法可以從已有的數(shù)組中返回選定的元素滑频〖衿可提取字符串的某個部分,并以新的字符串返回被提取的部分峡迷。不能改變原始數(shù)組银伟。返回新數(shù)組。語法:
array.slice(start, end)
參數(shù) 描述 start 可選绘搞。規(guī)定從何處開始選取彤避。如果是負(fù)數(shù),從尾部開始算起夯辖。即-1指最后一個元素琉预,-2指倒數(shù)第二個元素,以此類推蒿褂。 end 可選圆米。規(guī)定從何處結(jié)束選取。如果沒有指定該參數(shù)贮缅,則切分的數(shù)組包含從start到數(shù)組結(jié)束所有的元素榨咐。如果是負(fù)數(shù),則從數(shù)組尾部開始算起谴供。
數(shù)組遍歷
-
for循環(huán)
-
for/in循環(huán)處理稀疏數(shù)組
循環(huán)每次將一個可枚舉的屬性名(包括數(shù)組索引)賦值給循變量块茁。不存在的索引將不會遍歷到。
-
forEach()
方法用于調(diào)用數(shù)組的每個元素桂肌,并將元素傳遞給回調(diào)函數(shù)数焊。對空數(shù)組不執(zhí)行操作。返回值為
undefined
崎场。
多維數(shù)組
JavaScript不支持真正的多維數(shù)組佩耳,但可以用數(shù)組的數(shù)組來近似表示。訪問數(shù)組的數(shù)組中的元素可以使用兩次arrayObject操作符即可谭跨。
數(shù)組方法
-
join
定義和用法
把數(shù)組的所有元素轉(zhuǎn)為字符串并連接在一起
語法
arrayObject.join(separator)
參數(shù)
separator:可選干厚。要使用的分隔符,默認(rèn)逗號螃宙。
參數(shù) 描述 start 可選蛮瞄。規(guī)定從何處開始選取。如果是負(fù)數(shù)谆扎,從尾部開始算起挂捅。即-1指最后一個元素,-2指倒數(shù)第二個元素堂湖,以此類推闲先。 end 可選状土。規(guī)定從何處結(jié)束選取。如果沒有指定該參數(shù)伺糠,則切分的數(shù)組包含從start到數(shù)組結(jié)束所有的元素蒙谓。如果是負(fù)數(shù),則從數(shù)組尾部開始算起退盯。 返回值
生成的字符串
特點
`String.split()的逆操作
-
reverse
定義和用法
將數(shù)組中的元素顛倒順序
語法
arrayObject.reverse()
參數(shù)
無
返回值
改變后的數(shù)組
特點
原數(shù)組會改變
-
sort
定義和用法
對數(shù)組的元素進(jìn)行排序
語法
arrayObject.sort(sortby)
參數(shù)
參數(shù) 描述 sortby 可選彼乌。排序順序,必須是函數(shù)渊迁。 返回值
排序后的數(shù)組
特點
原數(shù)組會改變慰照;
當(dāng)省略參數(shù)是,數(shù)組元素以字母表順序排列(如有必要將臨時轉(zhuǎn)化為字符串比較琉朽。如果數(shù)組包含
undefined
會被放到數(shù)組尾部毒租。比較數(shù)字時要注意);比較函數(shù)需要兩個比較值(參數(shù))a(在前)和b(在后):若 a<b箱叁,則順序a→b墅垮,返回值<0;若a=b耕漱,則返回0算色;若a>b,則順序b→a螟够,返回值>0灾梦。(簡單的說,a-b為升序妓笙,b-a為降序)
-
concat
定義和用法
連接兩個或更多的數(shù)組
語法
arrayObject.concat(arrX,arrX,...,arrX)
參數(shù)
參數(shù) 描述 arrX 必需可為具體元素或數(shù)組對象若河。可以是任意多個 返回值
新生成的數(shù)組
特點
不會改變原數(shù)組
-
slice
定義和用法
可從已有的數(shù)組中返回選定的元素
語法
arrayObject.slice(start,end)
參數(shù)
參數(shù) 描述 start(包含) 必需開始的位置寞宫。若位負(fù)數(shù)則從尾部算起萧福,即-1為最后一個,-2為倒數(shù)第二個辈赋。 end(不包含) 可選結(jié)束位置鲫忍。負(fù)數(shù)同上。 返回值
包含從start到end(不包含)的新數(shù)組
特點
不會改變原數(shù)組
-
splice
定義和用法
從/向數(shù)組中添加/刪除元素
語法
arrayObject.splice(index,howmany,item1,item2,...itemX)
參數(shù)
參數(shù) 描述 index 必需钥屈。整數(shù)悟民,開始的位置。負(fù)數(shù)同上焕蹄。 howmany 必需。刪除的數(shù)量阀溶,0為不刪除腻脏。 item1,,...,itemX 可選鸦泳。要添加的新元素。 返回值
一個由刪除元素組成的數(shù)組永品,如果沒有刪除元素操作做鹰,就返回一個空數(shù)組。
特點
原數(shù)組會改變鼎姐;
區(qū)別于
concat()
钾麸,splice
會插入數(shù)組本身,不是元素炕桨。concat()
連接數(shù)組饭尝,插入的是元素。
-
push
定義和用法
向數(shù)組末尾添加一個或多個元素
語法
arrayObject.push(newelement1,..,newelementX)
參數(shù)
參數(shù) 描述 newelement1 必需献宫。添加數(shù)組的第一個元素钥平。 newelement2 可選。添加數(shù)組的第二個元素姊途。 newelementX 可選涉瘾。添加數(shù)組的第X個元素。 返回值
新數(shù)組的新長度
特點
原數(shù)組會改變捷兰;
-
pop
定義和用法
從/向數(shù)組中添加/刪除元素
語法
arrayObject.pop()
參數(shù)
無
返回值
被刪除的值
特點
原數(shù)組會改變立叛;
-
unshift
定義和用法
向數(shù)組開頭添加一個或多個元素
語法
arrayObject.unshift(newelement1,..,newelementX)
參數(shù)
參數(shù) 描述 newelement1 必需。添加數(shù)組的第一個元素贡茅。 newelement2 可選秘蛇。添加數(shù)組的第二個元素。 newelementX 可選友扰。添加數(shù)組的第X個元素彤叉。 返回值
新數(shù)組的新長度
特點
原數(shù)組會改變;
當(dāng)多個參數(shù)插入是一次性的村怪,即數(shù)組中插入的元素順序與在參數(shù)列表中的順序一致秽浇。
-
shift
定義和用法
刪除并返回數(shù)組的第一個元素
語法
arrayObject.shift()
參數(shù)
無
返回值
第一個元素的值
特點
原數(shù)組會改變;
-
toString
定義和用法
把數(shù)組中的每個元素(如有必要會調(diào)用元素的
toString()
方法)轉(zhuǎn)換為字符串語法
arrayObject.toString()
參數(shù)
無
返回值
轉(zhuǎn)成的新字符串甚负,與沒有參數(shù)的
join()
返回值一樣特點
不會改變原數(shù)組柬焕;
輸出不包括方括號或其他任何形式的包裹數(shù)組值的分隔符,如:[1,[2,3]].toString() // 生成1,2,3
-
toLocaleString
定義和用法
是
toString()
方法的本地化版本語法
arrayObject.toLocaleString()
參數(shù)
無
返回值
數(shù)組的本地字符串表示
特點
不會改變原數(shù)組梭域;
它調(diào)用元素
toLocaleString()
方法將每個數(shù)組元素轉(zhuǎn)化為字符串斑举,并使用本地化(和自定義實現(xiàn)的)分隔符將這些字符串連接起來生成最終的字符串
↓ ECMAScript 5 中的數(shù)組方法 ↓
-
forEach
定義和用法
用于調(diào)用數(shù)組的每個元素,并將元素傳遞給回調(diào)函數(shù)
語法
arrayObject.forEach(function(value, index, arr), thisValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需病涨。
value:必需當(dāng)前元素富玷;
index:可選當(dāng)前元素索引值;
arr:可選。當(dāng)前元素所屬的數(shù)組赎懦;thisValue 可選雀鹃。傳遞給函數(shù)的值一般用“this”值。如果省略励两,“undefined”會傳遞給“this"值黎茎。 返回值
undefined
特點
操作
arr
參數(shù)可改變原數(shù)組。forEach()
無法在所有元素都傳遞給調(diào)用的函數(shù)之前終止遍歷当悔。如果要終止必須把forEach()
方法放在一個try
塊中傅瞻,并能拋出一個異常。如果forEach()
調(diào)用的函數(shù)拋出forEach.break
異常盲憎,循環(huán)會提前終止嗅骄。對空數(shù)組不會執(zhí)行回調(diào)函數(shù)。
-
map
定義和用法
將調(diào)用的數(shù)組的每個元素傳遞給指定函數(shù)焙畔,并返回一個數(shù)組
語法
arrayObject.map(function(value, index, arr), thisValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需掸读。
value:必需當(dāng)前元素;
index:可選當(dāng)前元素索引值宏多;
arr:可選儿惫。當(dāng)前元素所屬的數(shù)組;thisValue 可選伸但。對象作為該執(zhí)行回調(diào)時使用肾请,傳遞給函數(shù),用作“this”的值更胖。如果省略或者傳入null铛铁、undefined,則回調(diào)函數(shù)的this為全局對象却妨。 返回值
新數(shù)組饵逐,它不修改調(diào)用的數(shù)組。
特點
操作arr參數(shù)可改變原數(shù)組彪标。
如果是稀疏數(shù)組倍权,返回也是同方式的稀疏數(shù)組:具有相同的長度,相同的缺失元素捞烟。
-
filter
定義和用法
創(chuàng)建一個新的數(shù)組薄声,新數(shù)組中的元素是通過檢查指定數(shù)組中符合條件的所有元素
語法
arrayObject.filter(function(value, index, arr), thisValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需。
value:必需當(dāng)前元素题画;
index:可選當(dāng)前元素索引值默辨;
arr:可選。當(dāng)前元素所屬的數(shù)組苍息;thisValue 可選缩幸。對象作為該執(zhí)行回調(diào)時使用壹置,傳遞給函數(shù),用作“this”的值表谊。如果省略或者傳入null蒸绩、undefined,則回調(diào)函數(shù)的this為全局對象铃肯。 返回值
返回數(shù)組,包含了符合條件的所有元素传蹈。如果沒有符合條件的元素則返回空數(shù)組押逼。
特點
不會改變原數(shù)組;
filter()
會跳過稀疏數(shù)組的空缺元素惦界,返回的數(shù)組總是稠密的挑格;不會對空數(shù)組進(jìn)行檢測。
-
every
定義和用法
用于檢測數(shù)組所有元素是否都符合指定條件(通過函數(shù)提供)
語法
arrayObject.every(function(value, index, arr), thisValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需沾歪。
value:必需當(dāng)前元素漂彤;
index:可選當(dāng)前元素索引值;
arr:可選灾搏。當(dāng)前元素所屬的數(shù)組挫望;thisValue 可選。對象作為該執(zhí)行回調(diào)時使用狂窑,傳遞給函數(shù)媳板,用作“this”的值。如果省略或者傳入null泉哈、undefined蛉幸,則回調(diào)函數(shù)的this為全局對象。 返回值
布爾值丛晦。使用指定函數(shù)檢測數(shù)組中的所有元素都滿足則返回
true
奕纫,只要檢測到有一個元素不滿足則返回false
并且剩余的元素不會再進(jìn)行檢測特點
不會改變原數(shù)組;
一旦確認(rèn)返回則停止遍歷烫沙;
根據(jù)數(shù)學(xué)上管理匹层,在空數(shù)組上調(diào)用時,
every()
返回true
斧吐,some()
返回false
又固;不會對空數(shù)組進(jìn)行檢測;
-
some
定義和用法
用于檢測數(shù)組所有元素是否都符合指定條件(通過函數(shù)提供)
語法
arrayObject.some(function(value, index, arr), thisValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需煤率。
value:必需當(dāng)前元素仰冠;
index:可選當(dāng)前元素索引值;
arr:可選蝶糯。當(dāng)前元素所屬的數(shù)組洋只;thisValue 可選。對象作為該執(zhí)行回調(diào)時使用,傳遞給函數(shù)识虚,用作“this”的值肢扯。如果省略或者傳入null、undefined担锤,則回調(diào)函數(shù)的this為全局對象蔚晨。 返回值
布爾值。使用指定函數(shù)檢測數(shù)組中的所有元素都滿足則返回
false
肛循,只要檢測到有一個元素不滿足則返回true
并且剩余的元素不會再進(jìn)行檢測特點
不會改變原數(shù)組铭腕;
一旦確認(rèn)返回則停止遍歷;
根據(jù)數(shù)學(xué)上管理多糠,在空數(shù)組上調(diào)用時累舷,
every()
返回true
,some()
返回false
夹孔;不會對空數(shù)組進(jìn)行檢測被盈;
-
reduce
定義和用法
使用指定的函數(shù)將數(shù)組元素進(jìn)行組合,生產(chǎn)單個值搭伤。接收一個函數(shù)作為累加器只怎,數(shù)組中的每個值(從左到右)開始縮減,最終計算為一個值怜俐。(也可稱為“注入”尝盼、“折疊”)∮悠校可以作為一個高階函數(shù)盾沫,用于函數(shù)的conpose
語法
arrayObject.reduce(function(total, value, index, arr), initialValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需。
total:必需殿漠。初始值赴精,或計算結(jié)束后的返回值;<br />value:必需當(dāng)前元素绞幌;
index:可選當(dāng)前元素索引值蕾哟;
arr:可選。當(dāng)前元素所屬的數(shù)組莲蜘;initialValue 可選谭确。傳遞給函數(shù)的初始值。 返回值
單個值
特點
不會改變原數(shù)組票渠;
不會對空數(shù)組進(jìn)行檢測逐哈;
-
reduceRight
定義和用法
使用指定的函數(shù)將數(shù)組元素進(jìn)行組合,生產(chǎn)單個值问顷。接收一個函數(shù)作為累加器昂秃,數(shù)組中的每個值(從右到左)開始縮減禀梳,最終計算為一個值。(也可稱為“注入”肠骆、“折疊”)算途。可以作為一個高階函數(shù)蚀腿,用于函數(shù)的conpose
語法
arrayObject.reduceRight(function(total, value, index, arr), initialValue)
參數(shù)
參數(shù) 描述 function(value, index, arr) 必需嘴瓤。
total:必需。初始值莉钙,或計算結(jié)束后的返回值纱注;<br />value:必需當(dāng)前元素;
index:可選當(dāng)前元素索引值胆胰;
arr:可選。當(dāng)前元素所屬的數(shù)組刻获;initialValue 可選蜀涨。傳遞給函數(shù)的初始值。 返回值
單個值
特點
不會改變原數(shù)組蝎毡;
不會對空數(shù)組進(jìn)行檢測厚柳;
-
indexOf
定義和用法
搜索整個數(shù)組中具有給定值的元素,返回找到的第一個元素的索引或者如果沒有找到就返回-1沐兵。
indexOf()
從頭至尾搜索語法
arrayObject.indexOf(item, start)
參數(shù)
參數(shù) 描述 item 必需别垮。查找的元素 start 可選。整數(shù)扎谎,在數(shù)組中開始的位置碳想。省略則從數(shù)組的開頭開始搜索 返回值
返回搜索到的元素位置,如果沒有搜到返回-1
特點
不會改變原數(shù)組毁靶;
字符串也有
indexOf()
和lastIndexOf()
方法胧奔,與數(shù)組方法的功能類似
-
lastIndexOf
定義和用法
搜索整個數(shù)組中具有給定值的元素,返回找到的第一個元素的索引或者如果沒有找到就返回-1预吆。
lastIndexOf()
反向搜索語法
arrayObject.lastIndexOf(item, start)
參數(shù)
參數(shù) 描述 item 必需龙填。查找的元素 start 可選。整數(shù)拐叉,在數(shù)組中開始的位置岩遗。省略則從數(shù)組的開頭開始搜索 返回值
返回搜索到的元素位置,如果沒有搜到返回-1
特點
不會改變原數(shù)組凤瘦;
字符串也有
indexOf()
和lastIndexOf()
方法宿礁,與數(shù)組方法的功能類似
↓ 數(shù)組類型 ↓
-
isArray
定義和用法
用于判斷一個對象是否為數(shù)組,是返回
true
蔬芥,否則返回false
語法
arrayObject.isArray(obj)
參數(shù)
參數(shù) 描述 obj 必需窘拯。要判斷的對象 返回值
布爾值红且。判斷一個對象是否為數(shù)組,是返回
true
涤姊,否則返回false
特點
判斷是否為數(shù)組暇番,
instanceof
在瀏覽器中可能有多個窗口或窗體存在,每個窗口都有自己的JavaScript環(huán)境思喊、全局對象壁酬,證明instanceof
操作符不能準(zhǔn)確檢測數(shù)組。
數(shù)組對象
數(shù)組區(qū)別對象的特性:
- 當(dāng)有新元素添加到數(shù)組中恨课,自動更新length屬性舆乔。
- 設(shè)置length為一個較小的值會截斷數(shù)組。
- 從
Array.prototype
中繼承一些有用的方法剂公。 - 其類型屬性為”Array“希俩。
JavaScript數(shù)組方法是特意定義為通用的,因此他們不僅應(yīng)用在真正的數(shù)組而且在類數(shù)組對象上都能正常工作纲辽。ES5中所有的方法都是通用的颜武。ES3中除了 toString()
和 toLocaleString()
以外所有方法也是通用的。(concat()
方法是一個特例:雖然可以用在類數(shù)組對象上拖吼,但它沒有將那個對象擴充進(jìn)返回的數(shù)組中鳞上。)既然類數(shù)組對象沒有繼承自 Array.prototype
,那就不能在他們上面直接調(diào)用數(shù)組方法吊档。
作為數(shù)組的字符串
在ES5中字符串的行為類似于只讀的數(shù)組篙议。除了可以用 chartAt()
方法來訪問單個的字符以外,還可以使用方括號怠硼」砑可索引的字符串的最大的好處就是簡單,用方括號代替 chartAt()
調(diào)用香璃,這樣更加簡潔吩愧、可讀并且可能更加高效。字符串的行為類似于數(shù)組增显,使得通用的數(shù)組方法可以應(yīng)用到字符串上雁佳。
注:字符串是不可變值,當(dāng)把它們作為數(shù)組看待是同云,它們是只讀的糖权。能修改數(shù)組的方法在字符串上是無效的。如果使用數(shù)組方法修改字符串會報錯炸站。