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

資訊專欄INFORMATION COLUMN

重論JavaScript偽數組的種種

jay_tian / 3342人閱讀

摘要:偽數組的偽數組理解什么是偽數組定義但是有屬性以下是常見偽數組對象偽數組轉為真數組自定義偽數組類數組從對象構建偽數組的兩個條件具有具有中任意一個并調用最終結果就是生成這個屬性具有名為的方法類數組當作數組使用的原理相當于的鍵名上述也可以用來寫特

偽數組

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

相關文章

  • javascript高級程序設計》筆記_數組 稀疏數組 數組

    摘要:數組是數據的有序列表,與其他語言不同的是,數組的每一項可以保存任何類型的數據。如下的代碼創建的就是一個密集數組稀疏數組與密集數組相反,并不強制要求數組元素是緊密相連的,即允許間隙的存在。 數組是數據的有序列表,與其他語言不同的是,ECMAScript 數組的每一項可以保存任何類型的數據。也就是說,可以用數組的第一個位置來保存字符串,用第二位置來保存數值,用第三個位置來保存對象, 以此類...

    pepperwang 評論0 收藏0
  • js中數組操作

    摘要:使用兩種方式實現劉備張飛關羽通過循環累加劉備張飛關羽可以把數組中的元素鏈接成字符串劉備張飛關羽將一個字符串數組的元素的順序進行反轉。 數組API API: Application Programming Interface,應用程序編程接口; js中對象提供的方法就叫做API; instanceof 檢測一個對象是否是數組;(用來對付復雜數據類型;) // 簡單數據類型 typeo...

    Terry_Tai 評論0 收藏0
  • Javascript-數組

    摘要:什么是偽數組偽數組是一個含有屬性的對象例如常見的偽數組對象偽數據如何轉成標準數組使用源碼解析行取數據開始值轉結束值直接取的參數有則使用開始值為負數,重新計算值,從尾部往前推算負數的絕對值超過長度,開始值賦值為開始值超過長度開始值賦值為結束值 什么是偽數組 偽數組是一個含有length屬性的json對象 例如: { 0: 1, 1: 2, length: 2 }...

    Jackwoo 評論0 收藏0
  • JavaScript-數組

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

    XanaHopper 評論0 收藏0
  • ES6 for..of 和 Generator,從數組 jQuery 對象說起

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

    Harriet666 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<