摘要:偽數(shù)組的偽數(shù)組理解什么是偽數(shù)組定義但是有屬性以下是常見偽數(shù)組對象偽數(shù)組轉(zhuǎn)為真數(shù)組自定義偽數(shù)組類數(shù)組從對象構(gòu)建偽數(shù)組的兩個條件具有具有中任意一個并調(diào)用最終結(jié)果就是生成這個屬性具有名為的方法類數(shù)組當(dāng)作數(shù)組使用的原理相當(dāng)于的鍵名上述也可以用來寫特
偽數(shù)組
什么是偽數(shù)組?javascript的偽數(shù)組理解
定義:obj instanceof Array === false 但是有l(wèi)ength屬性
以下是常見偽數(shù)組:
arguments
NodeList、HTMLCollection
jQuery對象
偽數(shù)組轉(zhuǎn)為真·數(shù)組Array.prototype.splice.call(obj)
自定義偽數(shù)組 類數(shù)組//從對象構(gòu)建偽數(shù)組的兩個條件: //1. 具有l(wèi)ength || 具有pushunshiftpopshift中任意一個并調(diào)用(最終結(jié)果就是生成length這個屬性) //2. 具有名為splice的方法 var obj={ length:0, splice(){} }; console.log(obj); var obj2={ push:[].push, splice(){} }; obj2.push(); console.log(obj2);類數(shù)組當(dāng)作數(shù)組使用的原理:length相當(dāng)于obj的鍵名
var obj={ length:0, splice(){}, push:Array.prototype.push }; obj[0]=10; obj.push(1,2,3); console.log(obj);//[1,2,3,splice:f,push:f] var obj2={ length:1, splice(){}, push:Array.prototype.push }; obj2[0]=10; obj2.push(1,2,3); console.log(obj2);//[10,1,2,3,splice:f,push:f] //上述push也可以用apply來寫 { push:function () { return [].push.apply(this,arguments); }}特別的,兩種DOM偽數(shù)組的區(qū)別 1. getElementsByTagName 得到的是 HTMLCollections類
// 如果有一個ID為"test"的元素,可以直接取得 document.getElementsByTagName("div").test
如上,ID元素會被直接列在HTMLCollections對象里的同名鍵中
item(),length,namedItem()
2.querySelector 得到的是 NodeList類document.querySelectorAll("div").forEach((a,b,c)=>{ console.log("第一個參數(shù):" + a + "值"); console.log("第二個參數(shù):" + b + "鍵"); console.log("第三個參數(shù):" + c + "自身"); });
forEach()
item(),length
典型ES6對象特性,entries,keys,values
共性for(let i=0;i實際上,通過控制臺觀察發(fā)現(xiàn),兩者都具備iterator接口,都可以支持for ... of語法
相比來講,querySelector內(nèi)置forEach,會更方便援引Arguments來說事
const { callee,//函數(shù)本身 length,//參數(shù)長度 [..."所有傳入的參數(shù)"]//可以用下標(biāo)獲得所有的按順序得到的參數(shù) }=arguments;此外,arguments也具備iterator接口,可以直接用for...of遍歷
總結(jié):偽數(shù)組基本上屬于一個概念問題,只需要知道的是--偽數(shù)組的原型一定不是數(shù)組,所以,不會有數(shù)組的所有方法,在使用的時候不能想當(dāng)然的去直接用Array.prototype方法比如push,pop,concat等等
偽數(shù)組轉(zhuǎn)為真數(shù)組的方法有好多種,列下思路:
1.遍歷偽數(shù)組存入真數(shù)組
2.Array.prototype.splice.call(obj)
3.Array.from()
4.原型繼承,arr.__proto__=Array.prototype
5.其他工具庫中的方法,如jQuery中的makeArray()toArray()等
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92017.html
摘要:數(shù)組是數(shù)據(jù)的有序列表,與其他語言不同的是,數(shù)組的每一項可以保存任何類型的數(shù)據(jù)。如下的代碼創(chuàng)建的就是一個密集數(shù)組稀疏數(shù)組與密集數(shù)組相反,并不強制要求數(shù)組元素是緊密相連的,即允許間隙的存在。 數(shù)組是數(shù)據(jù)的有序列表,與其他語言不同的是,ECMAScript 數(shù)組的每一項可以保存任何類型的數(shù)據(jù)。也就是說,可以用數(shù)組的第一個位置來保存字符串,用第二位置來保存數(shù)值,用第三個位置來保存對象, 以此類...
摘要:使用兩種方式實現(xiàn)劉備張飛關(guān)羽通過循環(huán)累加劉備張飛關(guān)羽可以把數(shù)組中的元素鏈接成字符串劉備張飛關(guān)羽將一個字符串?dāng)?shù)組的元素的順序進(jìn)行反轉(zhuǎn)。 數(shù)組API API: Application Programming Interface,應(yīng)用程序編程接口; js中對象提供的方法就叫做API; instanceof 檢測一個對象是否是數(shù)組;(用來對付復(fù)雜數(shù)據(jù)類型;) // 簡單數(shù)據(jù)類型 typeo...
摘要:什么是偽數(shù)組偽數(shù)組是一個含有屬性的對象例如常見的偽數(shù)組對象偽數(shù)據(jù)如何轉(zhuǎn)成標(biāo)準(zhǔn)數(shù)組使用源碼解析行取數(shù)據(jù)開始值轉(zhuǎn)結(jié)束值直接取的參數(shù)有則使用開始值為負(fù)數(shù),重新計算值,從尾部往前推算負(fù)數(shù)的絕對值超過長度,開始值賦值為開始值超過長度開始值賦值為結(jié)束值 什么是偽數(shù)組 偽數(shù)組是一個含有l(wèi)ength屬性的json對象 例如: { 0: 1, 1: 2, length: 2 }...
摘要:什么是數(shù)組數(shù)組是值的有序集合。這個位置用數(shù)字表示叫索引數(shù)組用字符串表示叫關(guān)聯(lián)數(shù)組。 什么是數(shù)組 數(shù)組是值的有序集合。數(shù)組中的每個值叫一個元素,每個元素在數(shù)組中都有一個唯一的位置。這個位置用數(shù)字表示叫索引數(shù)組;用字符串表示叫關(guān)聯(lián)數(shù)組。數(shù)組的元素可以是不同的類型可以動態(tài)的向數(shù)組差人新元素,或者刪除指定元素 一維數(shù)組 定義數(shù)組 定義數(shù)組的方式有三種 /*數(shù)組字面量方式定義數(shù)組*/ var a...
摘要:引用自可迭代對象和迭代器不以規(guī)矩,不成方圓為了使某個對象成為可迭代對象象,它必須實現(xiàn)方法,也就是說,它得有一個是的屬性。的遍歷,絕對應(yīng)該用。 pseudo 英 [sju:d??] 美 [su:do?]adj.假的,虛偽的n.[口]假冒的人,偽君子 pseudo-array 英 [sju:d???re?] 美 [sju:d???re?][計] 偽數(shù)組 jQuery 對象是偽數(shù)組 兩個...
閱讀 1181·2021-09-22 15:24
閱讀 2285·2019-08-30 15:44
閱讀 2615·2019-08-30 10:55
閱讀 3355·2019-08-29 13:25
閱讀 1639·2019-08-29 13:09
閱讀 1391·2019-08-26 14:05
閱讀 1379·2019-08-26 13:58
閱讀 1985·2019-08-26 11:57