最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript偽數(shù)組和數(shù)組的使用與區(qū)別

 更新時(shí)間:2021年05月07日 14:17:52   作者:流楚丶格念  
這篇文章主要給大家介紹了關(guān)于JavaScript偽數(shù)組和數(shù)組使用與區(qū)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

偽數(shù)組和數(shù)組

在JavaScript中,除了5種原始數(shù)據(jù)類型之外,其他所有的都是對(duì)象,包括函數(shù)(Function)。

對(duì)象與數(shù)組的關(guān)系

在說(shuō)區(qū)別之前,需要先提到另外一個(gè)知識(shí),就是 JavaScript 的原型繼承。

所有 JavaScript 的內(nèi)置構(gòu)造函數(shù)都是繼承自 Object.prototype 。

在這個(gè)前提下,可以理解為使用 new Array() 或 [] 創(chuàng)建出來(lái)的數(shù)組對(duì)象,都會(huì)擁有 Object.prototype 的屬性值。

var obj = {};// 擁有 Object.prototype 的屬性值
var arr = [];
//使用數(shù)組直接量創(chuàng)建的數(shù)組,由于 Array.prototype 的屬性繼承自 Object.prototype,
//那么,它將同時(shí)擁有 Array.prototype 和 Object.prototype 的屬性值

可以得到對(duì)象和數(shù)組的第一個(gè)區(qū)別:對(duì)象沒有數(shù)組 Array.prototype 的屬性值。

什么是數(shù)組

數(shù)組具有一個(gè)最基本特征:索引,這是對(duì)象所沒有的,下面來(lái)看一段代碼:

var obj = {};
var arr = [];
 
obj[2] = 'a';
arr[2] = 'a';
 
console.log(obj[2]); // => a
console.log(arr[2]); // => a
console.log(obj.length); // => undefined
console.log(arr.length); // => 3
  • obj[2]輸出'a',是因?yàn)閷?duì)象就是普通的鍵值對(duì)存取數(shù)據(jù)
  • 而arr[2]輸出'a' 則不同,數(shù)組是通過(guò)索引來(lái)存取數(shù)據(jù),arr[2]之所以輸出'a',是因?yàn)閿?shù)組arr索引2的位置已經(jīng)存儲(chǔ)了數(shù)據(jù)
  • obj.length并不具有數(shù)組的特性,并且obj沒有保存屬性length,那么自然就會(huì)輸出undefined
  • 而對(duì)于數(shù)組來(lái)說(shuō),length是數(shù)組的一個(gè)內(nèi)置屬性,數(shù)組會(huì)根據(jù)索引長(zhǎng)度來(lái)更改length的值
  • 為什么arr.length輸出3,而不是1
    • 在給數(shù)組添加元素時(shí),并沒有按照連續(xù)的索引添加,所以導(dǎo)致數(shù)組的索引不連續(xù),那么就導(dǎo)致索引長(zhǎng)度大于元素個(gè)數(shù)

什么是偽數(shù)組

  1. 擁有 length 屬性,其它屬性(索引)為非負(fù)整數(shù)(對(duì)象中的索引會(huì)被當(dāng)做字符串來(lái)處理,這里你可以當(dāng)做是個(gè)非負(fù)整數(shù)串來(lái)理解)
  2. 不具有數(shù)組所具有的方法

偽數(shù)組,就是像數(shù)組一樣有 length 屬性,也有 0、1、2、3 等屬性的對(duì)象,看起來(lái)就像數(shù)組一樣,但不是數(shù)組,比如:

var fakeArray = {
  "0": "first",
  "1": "second",
  "2": "third",
  length: 3
};
 
for (var i = 0; i < fakeArray.length; i++) {
  console.log(fakeArray[i]);
}
 
Array.prototype.join.call(fakeArray,'+');

常見的偽數(shù)組有:

  • 函數(shù)內(nèi)部的 arguments
  • DOM 對(duì)象列表(比如通過(guò) document.getElementsByTags 得到的列表)
  • jQuery 對(duì)象(比如 $("div") )

偽數(shù)組是一個(gè) Object,而真實(shí)的數(shù)組是一個(gè) Array。

偽數(shù)組存在的意義,是可以讓普通的對(duì)象也能正常使用數(shù)組的很多方法,比如:

var arr = Array.prototype.slice.call(arguments);
 
Array.prototype.forEach.call(arguments, function(v) {
  // 循環(huán)arguments對(duì)象
});

// push
// some
// every
// filter
// map
// ...

以上在借用數(shù)組的原型方法的時(shí)候都可以通過(guò)數(shù)組直接量來(lái)簡(jiǎn)化使用:

var obj = {
  0: 'a',
  1: 'b',
  2: 'c',
  length: 3
}

;[].push.call(obj, 'd')

console.log([].slice.call(obj))

;[].forEach.call(obj, function (num, index) {
  console.log(num)
})

二者區(qū)別

1.長(zhǎng)度:

  • 真數(shù)組的長(zhǎng)度是可變的
  • 偽數(shù)組的長(zhǎng)度不可變

2.方法的使用:

  • 真數(shù)組可以使用數(shù)組中的方法
  • 偽數(shù)組不可以使用數(shù)組中的方法

小結(jié)

對(duì)象沒有數(shù)組 Array.prototype 的屬性值,類型是 Object ,而數(shù)組類型是 Array
數(shù)組是基于索引的實(shí)現(xiàn), length 會(huì)自動(dòng)更新,而對(duì)象是鍵值對(duì)
使用對(duì)象可以創(chuàng)建偽數(shù)組,偽數(shù)組可以正常使用數(shù)組的大部分方法

總結(jié)

到此這篇關(guān)于JavaScript偽數(shù)組和數(shù)組使用與區(qū)別的文章就介紹到這了,更多相關(guān)JavaScript偽數(shù)組和數(shù)組內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • webpack配置的最佳實(shí)踐分享

    webpack配置的最佳實(shí)踐分享

    在網(wǎng)上看到很多人都寫了“webpack最佳實(shí)踐方案”,適合的才是“最佳”的,在這里總結(jié)一下自己在工作過(guò)程中總結(jié)出來(lái)的最佳實(shí)踐,所以本文主要介紹了關(guān)于webpack配置的相關(guān)資料,需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • 老生常談Javascript中的原型和this指針

    老生常談Javascript中的原型和this指針

    下面小編就為大家?guī)?lái)一篇老生常談Javascript中的原型和this指針。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦
    2016-10-10
  • JavaScript 事件對(duì)象的實(shí)現(xiàn)

    JavaScript 事件對(duì)象的實(shí)現(xiàn)

    前我寫過(guò)一篇關(guān)于JavaScript如何實(shí)現(xiàn)面向?qū)ο缶幊痰奈恼?。今天,我寫這篇文章跟大家討論一下,如何實(shí)現(xiàn)事件。
    2009-07-07
  • javascript中for...of和for..in循環(huán)的區(qū)別

    javascript中for...of和for..in循環(huán)的區(qū)別

    JS中循環(huán)語(yǔ)句眾多,你是否也有用的時(shí)候突然不知道用哪個(gè)的經(jīng)歷,本文主要介紹了javascript中for...of和for..in循環(huán)的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • JS中如何使用 filter() 方法過(guò)濾數(shù)組元素

    JS中如何使用 filter() 方法過(guò)濾數(shù)組元素

    filter()方法是JavaScript中用于過(guò)濾數(shù)組元素的常用方法,它接受一個(gè)回調(diào)函數(shù)作為參數(shù),返回一個(gè)新數(shù)組,本文總結(jié)了使用filter()方法的最佳實(shí)踐,感興趣的朋友一起看看吧
    2025-01-01
  • JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝

    JavaScript使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝

    Lodash?是一個(gè)?JavaScript?的工具庫(kù),它提供了一系列的函數(shù)來(lái)簡(jiǎn)化代碼編寫,本文主要為大家介紹了如何使用lodash實(shí)現(xiàn)命名轉(zhuǎn)換和函數(shù)封裝,感興趣的小伙伴可以了解下
    2023-11-11
  • js replace 全局替換的操作方法

    js replace 全局替換的操作方法

    這篇文章主要介紹了js replace 全局替換的操作方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-06-06
  • 深入了解JavaScript中的垃圾回收機(jī)制

    深入了解JavaScript中的垃圾回收機(jī)制

    JavaScript中的垃圾回收機(jī)制負(fù)責(zé)自動(dòng)管理內(nèi)存,回收不再使用的對(duì)象所占用的內(nèi)存空間。本文主要介紹了JS中垃圾回收機(jī)制的相關(guān)知識(shí),需要的可以參考一下
    2023-04-04
  • JS實(shí)現(xiàn)頁(yè)面打印功能

    JS實(shí)現(xiàn)頁(yè)面打印功能

    本文主要介紹了JS實(shí)現(xiàn)頁(yè)面打印功能的方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 原生js實(shí)現(xiàn)旋轉(zhuǎn)木馬效果

    原生js實(shí)現(xiàn)旋轉(zhuǎn)木馬效果

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)旋轉(zhuǎn)木馬效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

梅州市| 鹿泉市| 永新县| 长葛市| 建宁县| 彭泽县| 常山县| 奉新县| 宜兴市| 乐平市| 玉环县| 昌都县| 钟山县| 建德市| 海伦市| 井研县| 五大连池市| 吉首市| 莎车县| 固阳县| 舒城县| 新竹市| 青州市| 黑水县| 紫云| 平舆县| 昌江| 北流市| 镇巴县| 堆龙德庆县| 天柱县| 平罗县| 马边| 巴林右旗| 龙岩市| 枣阳市| 新密市| 响水县| 安阳县| 额济纳旗| 库车县|