电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JavaScript偽數組和數組的使用與區別

瀏覽:94日期:2023-09-29 17:06:07

偽數組和數組

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

對象與數組的關系

在說區別之前,需要先提到另外一個知識,就是 JavaScript 的原型繼承。

所有 JavaScript 的內置構造函數都是繼承自 Object.prototype 。

在這個前提下,可以理解為使用 new Array() 或 [] 創建出來的數組對象,都會擁有 Object.prototype 的屬性值。

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

可以得到對象和數組的第一個區別:對象沒有數組 Array.prototype 的屬性值。

什么是數組

數組具有一個最基本特征:索引,這是對象所沒有的,下面來看一段代碼:

var obj = {};var arr = []; obj[2] = ’a’;arr[2] = ’a’; console.log(obj[2]); // => aconsole.log(arr[2]); // => aconsole.log(obj.length); // => undefinedconsole.log(arr.length); // => 3 obj[2]輸出’a’,是因為對象就是普通的鍵值對存取數據 而arr[2]輸出’a’ 則不同,數組是通過索引來存取數據,arr[2]之所以輸出’a’,是因為數組arr索引2的位置已經存儲了數據 obj.length并不具有數組的特性,并且obj沒有保存屬性length,那么自然就會輸出undefined 而對于數組來說,length是數組的一個內置屬性,數組會根據索引長度來更改length的值 為什么arr.length輸出3,而不是1 在給數組添加元素時,并沒有按照連續的索引添加,所以導致數組的索引不連續,那么就導致索引長度大于元素個數什么是偽數組 擁有 length 屬性,其它屬性(索引)為非負整數(對象中的索引會被當做字符串來處理,這里你可以當做是個非負整數串來理解) 不具有數組所具有的方法

偽數組,就是像數組一樣有 length 屬性,也有 0、1、2、3 等屬性的對象,看起來就像數組一樣,但不是數組,比如:

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,’+’);

常見的偽數組有:

函數內部的 arguments DOM 對象列表(比如通過 document.getElementsByTags 得到的列表) jQuery 對象(比如 $('div') )

偽數組是一個 Object,而真實的數組是一個 Array。

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

var arr = Array.prototype.slice.call(arguments); Array.prototype.forEach.call(arguments, function(v) { // 循環arguments對象});// push// some// every// filter// map// ...

以上在借用數組的原型方法的時候都可以通過數組直接量來簡化使用:

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)})二者區別

1.長度:

真數組的長度是可變的 偽數組的長度不可變

2.方法的使用:

真數組可以使用數組中的方法 偽數組不可以使用數組中的方法

小結

對象沒有數組 Array.prototype 的屬性值,類型是 Object ,而數組類型是 Array數組是基于索引的實現, length 會自動更新,而對象是鍵值對使用對象可以創建偽數組,偽數組可以正常使用數組的大部分方法

總結

到此這篇關于JavaScript偽數組和數組使用與區別的文章就介紹到這了,更多相關JavaScript偽數組和數組內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 传动滚筒_厂家-淄博海恒机械制造厂 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 气象监测系统_气象传感器_微型气象仪_气象环境监测仪-山东风途物联网 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 尚为传动-专业高精密蜗轮蜗杆,双导程蜗轮蜗杆,蜗轮蜗杆减速机,蜗杆减速机生产厂家 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 小型UV打印机-UV平板打印机-大型uv打印机-UV打印机源头厂家 |松普集团 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 成都网站建设制作_高端网站设计公司「做网站送优化推广」 | 玉米深加工机械,玉米加工设备,玉米加工机械等玉米深加工设备制造商-河南成立粮油机械有限公司 | 分子精馏/精馏设备生产厂家-分子蒸馏工艺实验-新诺舜尧(天津)化工设备有限公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 安全阀_弹簧式安全阀_美标安全阀_工业冷冻安全阀厂家-中国·阿司米阀门有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 热缩管切管机-超声波切带机-织带切带机-无纺布切布机-深圳市宸兴业科技有限公司 | 海鲜池-专注海鲜鱼缸、移动海鲜缸、饭店鱼缸设计定做-日晟水族厂家 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | STRO|DTRO-STRO反渗透膜(科普)_碟滤| 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 不锈钢水管-不锈钢燃气管-卫生级不锈钢管件-不锈钢食品级水管-广东双兴新材料集团有限公司 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 微型气象仪_气象传感器_防爆气象传感器-天合传感器大全 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 南京种植牙医院【官方挂号】_南京治疗种植牙医院那个好_南京看种植牙哪里好_南京茀莱堡口腔医院 尼龙PA610树脂,尼龙PA612树脂,尼龙PA1010树脂,透明尼龙-谷骐科技【官网】 | 衬塑设备,衬四氟设备,衬氟设备-淄博鲲鹏防腐设备有限公司 | 广州食堂承包_广州团餐配送_广州堂食餐饮服务公司 - 旺记餐饮 | 洗砂机械-球磨制砂机-洗沙制砂机械设备_青州冠诚重工机械有限公司 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 聚氨酯催化剂K15,延迟催化剂SA-1,叔胺延迟催化剂,DBU,二甲基哌嗪,催化剂TMR-2,-聚氨酯催化剂生产厂家 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 工业rfid读写器_RFID工业读写器_工业rfid设备厂商-ANDEAWELL | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 船用烟火信号弹-CCS防汛救生圈-船用救生抛绳器(海威救生设备) | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 超声波反应釜【百科】-以马内利仪器| 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 |