成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

重論JavaScript偽數(shù)組的種種

jay_tian / 3343人閱讀

摘要:偽數(shù)組的偽數(shù)組理解什么是偽數(shù)組定義但是有屬性以下是常見(jiàn)偽數(shù)組對(duì)象偽數(shù)組轉(zhuǎn)為真數(shù)組自定義偽數(shù)組類數(shù)組從對(duì)象構(gòu)建偽數(shù)組的兩個(gè)條件具有具有中任意一個(gè)并調(diào)用最終結(jié)果就是生成這個(gè)屬性具有名為的方法類數(shù)組當(dāng)作數(shù)組使用的原理相當(dāng)于的鍵名上述也可以用來(lái)寫(xiě)特

偽數(shù)組

javascript的偽數(shù)組理解

什么是偽數(shù)組?

定義:obj instanceof Array === false 但是有l(wèi)ength屬性

以下是常見(jiàn)偽數(shù)組:

arguments

NodeList、HTMLCollection

jQuery對(duì)象

偽數(shù)組轉(zhuǎn)為真·數(shù)組

Array.prototype.splice.call(obj)

自定義偽數(shù)組 類數(shù)組
//從對(duì)象構(gòu)建偽數(shù)組的兩個(gè)條件:
//1. 具有l(wèi)ength || 具有pushunshiftpopshift中任意一個(gè)并調(diào)用(最終結(jié)果就是生成length這個(gè)屬性)
//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來(lái)寫(xiě)
{   push:function () {
  return [].push.apply(this,arguments);
}}
特別的,兩種DOM偽數(shù)組的區(qū)別 1. getElementsByTagName 得到的是 HTMLCollections類
// 如果有一個(gè)ID為"test"的元素,可以直接取得
document.getElementsByTagName("div").test

如上,ID元素會(huì)被直接列在HTMLCollections對(duì)象里的同名鍵中

item(),length,namedItem()

2.querySelector 得到的是 NodeList類
document.querySelectorAll("div").forEach((a,b,c)=>{
    console.log("第一個(gè)參數(shù):" + a + "值");
    console.log("第二個(gè)參數(shù):" + b + "鍵");
   console.log("第三個(gè)參數(shù):" + c + "自身");
});

forEach()

item(),length

典型ES6對(duì)象特性,entries,keys,values

共性
for(let i=0;i

實(shí)際上,通過(guò)控制臺(tái)觀察發(fā)現(xiàn),兩者都具備iterator接口,都可以支持for ... of語(yǔ)法

相比來(lái)講,querySelector內(nèi)置forEach,會(huì)更方便

援引Arguments來(lái)說(shuō)事

const {
   callee,//函數(shù)本身
   length,//參數(shù)長(zhǎng)度
   [..."所有傳入的參數(shù)"]//可以用下標(biāo)獲得所有的按順序得到的參數(shù)
}=arguments;

此外,arguments也具備iterator接口,可以直接用for...of遍歷

總結(jié):

偽數(shù)組基本上屬于一個(gè)概念問(wèn)題,只需要知道的是--偽數(shù)組的原型一定不是數(shù)組,所以,不會(huì)有數(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.其他工具庫(kù)中的方法,如jQuery中的makeArray()toArray()等

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92017.html

相關(guān)文章

  • javascript高級(jí)程序設(shè)計(jì)》筆記_數(shù)組 稀疏數(shù)組 數(shù)組

    摘要:數(shù)組是數(shù)據(jù)的有序列表,與其他語(yǔ)言不同的是,數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。如下的代碼創(chuàng)建的就是一個(gè)密集數(shù)組稀疏數(shù)組與密集數(shù)組相反,并不強(qiáng)制要求數(shù)組元素是緊密相連的,即允許間隙的存在。 數(shù)組是數(shù)據(jù)的有序列表,與其他語(yǔ)言不同的是,ECMAScript 數(shù)組的每一項(xiàng)可以保存任何類型的數(shù)據(jù)。也就是說(shuō),可以用數(shù)組的第一個(gè)位置來(lái)保存字符串,用第二位置來(lái)保存數(shù)值,用第三個(gè)位置來(lái)保存對(duì)象, 以此類...

    pepperwang 評(píng)論0 收藏0
  • js中數(shù)組操作

    摘要:使用兩種方式實(shí)現(xiàn)劉備張飛關(guān)羽通過(guò)循環(huán)累加劉備張飛關(guān)羽可以把數(shù)組中的元素鏈接成字符串劉備張飛關(guān)羽將一個(gè)字符串?dāng)?shù)組的元素的順序進(jìn)行反轉(zhuǎn)。 數(shù)組API API: Application Programming Interface,應(yīng)用程序編程接口; js中對(duì)象提供的方法就叫做API; instanceof 檢測(cè)一個(gè)對(duì)象是否是數(shù)組;(用來(lái)對(duì)付復(fù)雜數(shù)據(jù)類型;) // 簡(jiǎn)單數(shù)據(jù)類型 typeo...

    Terry_Tai 評(píng)論0 收藏0
  • Javascript-數(shù)組

    摘要:什么是偽數(shù)組偽數(shù)組是一個(gè)含有屬性的對(duì)象例如常見(jiàn)的偽數(shù)組對(duì)象偽數(shù)據(jù)如何轉(zhuǎn)成標(biāo)準(zhǔn)數(shù)組使用源碼解析行取數(shù)據(jù)開(kāi)始值轉(zhuǎn)結(jié)束值直接取的參數(shù)有則使用開(kāi)始值為負(fù)數(shù),重新計(jì)算值,從尾部往前推算負(fù)數(shù)的絕對(duì)值超過(guò)長(zhǎng)度,開(kāi)始值賦值為開(kāi)始值超過(guò)長(zhǎng)度開(kāi)始值賦值為結(jié)束值 什么是偽數(shù)組 偽數(shù)組是一個(gè)含有l(wèi)ength屬性的json對(duì)象 例如: { 0: 1, 1: 2, length: 2 }...

    Jackwoo 評(píng)論0 收藏0
  • JavaScript-數(shù)組

    摘要:什么是數(shù)組數(shù)組是值的有序集合。這個(gè)位置用數(shù)字表示叫索引數(shù)組用字符串表示叫關(guān)聯(lián)數(shù)組。 什么是數(shù)組 數(shù)組是值的有序集合。數(shù)組中的每個(gè)值叫一個(gè)元素,每個(gè)元素在數(shù)組中都有一個(gè)唯一的位置。這個(gè)位置用數(shù)字表示叫索引數(shù)組;用字符串表示叫關(guān)聯(lián)數(shù)組。數(shù)組的元素可以是不同的類型可以動(dòng)態(tài)的向數(shù)組差人新元素,或者刪除指定元素 一維數(shù)組 定義數(shù)組 定義數(shù)組的方式有三種 /*數(shù)組字面量方式定義數(shù)組*/ var a...

    XanaHopper 評(píng)論0 收藏0
  • ES6 for..of 和 Generator,從數(shù)組 jQuery 對(duì)象說(shuō)起

    摘要:引用自可迭代對(duì)象和迭代器不以規(guī)矩,不成方圓為了使某個(gè)對(duì)象成為可迭代對(duì)象象,它必須實(shí)現(xiàn)方法,也就是說(shuō),它得有一個(gè)是的屬性。的遍歷,絕對(duì)應(yīng)該用。 pseudo 英 [sju:d??] 美 [su:do?]adj.假的,虛偽的n.[口]假冒的人,偽君子 pseudo-array 英 [sju:d???re?] 美 [sju:d???re?][計(jì)] 偽數(shù)組 jQuery 對(duì)象是偽數(shù)組 兩個(gè)...

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

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

0條評(píng)論

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