摘要:偽數組的偽數組理解什么是偽數組定義但是有屬性以下是常見偽數組對象偽數組轉為真數組自定義偽數組類數組從對象構建偽數組的兩個條件具有具有中任意一個并調用最終結果就是生成這個屬性具有名為的方法類數組當作數組使用的原理相當于的鍵名上述也可以用來寫特
偽數組
什么是偽數組?javascript的偽數組理解
定義:obj instanceof Array === false 但是有length屬性
以下是常見偽數組:
arguments
NodeList、HTMLCollection
jQuery對象
偽數組轉為真·數組Array.prototype.splice.call(obj)
自定義偽數組 類數組//從對象構建偽數組的兩個條件: //1. 具有length || 具有pushunshiftpopshift中任意一個并調用(最終結果就是生成length這個屬性) //2. 具有名為splice的方法 var obj={ length:0, splice(){} }; console.log(obj); var obj2={ push:[].push, splice(){} }; obj2.push(); console.log(obj2);類數組當作數組使用的原理:length相當于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偽數組的區別 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("第一個參數:" + a + "值"); console.log("第二個參數:" + b + "鍵"); console.log("第三個參數:" + c + "自身"); });
forEach()
item(),length
典型ES6對象特性,entries,keys,values
共性for(let i=0;i實際上,通過控制臺觀察發現,兩者都具備iterator接口,都可以支持for ... of語法
相比來講,querySelector內置forEach,會更方便援引Arguments來說事
const { callee,//函數本身 length,//參數長度 [..."所有傳入的參數"]//可以用下標獲得所有的按順序得到的參數 }=arguments;此外,arguments也具備iterator接口,可以直接用for...of遍歷
總結:偽數組基本上屬于一個概念問題,只需要知道的是--偽數組的原型一定不是數組,所以,不會有數組的所有方法,在使用的時候不能想當然的去直接用Array.prototype方法比如push,pop,concat等等
偽數組轉為真數組的方法有好多種,列下思路:
1.遍歷偽數組存入真數組
2.Array.prototype.splice.call(obj)
3.Array.from()
4.原型繼承,arr.__proto__=Array.prototype
5.其他工具庫中的方法,如jQuery中的makeArray()toArray()等
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92017.html
摘要:數組是數據的有序列表,與其他語言不同的是,數組的每一項可以保存任何類型的數據。如下的代碼創建的就是一個密集數組稀疏數組與密集數組相反,并不強制要求數組元素是緊密相連的,即允許間隙的存在。 數組是數據的有序列表,與其他語言不同的是,ECMAScript 數組的每一項可以保存任何類型的數據。也就是說,可以用數組的第一個位置來保存字符串,用第二位置來保存數值,用第三個位置來保存對象, 以此類...
摘要:什么是偽數組偽數組是一個含有屬性的對象例如常見的偽數組對象偽數據如何轉成標準數組使用源碼解析行取數據開始值轉結束值直接取的參數有則使用開始值為負數,重新計算值,從尾部往前推算負數的絕對值超過長度,開始值賦值為開始值超過長度開始值賦值為結束值 什么是偽數組 偽數組是一個含有length屬性的json對象 例如: { 0: 1, 1: 2, length: 2 }...
摘要:什么是數組數組是值的有序集合。這個位置用數字表示叫索引數組用字符串表示叫關聯數組。 什么是數組 數組是值的有序集合。數組中的每個值叫一個元素,每個元素在數組中都有一個唯一的位置。這個位置用數字表示叫索引數組;用字符串表示叫關聯數組。數組的元素可以是不同的類型可以動態的向數組差人新元素,或者刪除指定元素 一維數組 定義數組 定義數組的方式有三種 /*數組字面量方式定義數組*/ var a...
摘要:引用自可迭代對象和迭代器不以規矩,不成方圓為了使某個對象成為可迭代對象象,它必須實現方法,也就是說,它得有一個是的屬性。的遍歷,絕對應該用。 pseudo 英 [sju:d??] 美 [su:do?]adj.假的,虛偽的n.[口]假冒的人,偽君子 pseudo-array 英 [sju:d???re?] 美 [sju:d???re?][計] 偽數組 jQuery 對象是偽數組 兩個...
閱讀 1195·2021-09-22 15:24
閱讀 2295·2019-08-30 15:44
閱讀 2623·2019-08-30 10:55
閱讀 3362·2019-08-29 13:25
閱讀 1644·2019-08-29 13:09
閱讀 1401·2019-08-26 14:05
閱讀 1395·2019-08-26 13:58
閱讀 1988·2019-08-26 11:57