摘要:角度實(shí)例對(duì)象沒(méi)有屬性,只有構(gòu)造函數(shù)才有屬性,也就是說(shuō)構(gòu)造函數(shù)本身保存了對(duì)屬性的引用。。的屬性變量和屬性對(duì)象將會(huì)被該對(duì)象引用的構(gòu)造函數(shù)所創(chuàng)建的對(duì)象繼承那么將會(huì)繼承屬性函數(shù)。
本文章旨在講解數(shù)組,對(duì)象,類數(shù)組對(duì)象之間的聯(lián)系。但會(huì)穿插一些其他的相關(guān)知識(shí)。
首先理解它們的概念:
1、數(shù)組
(1)什么是數(shù)組:簡(jiǎn)而言之就是一組有序的數(shù)據(jù)集合。
它的定義方法有三種。
var arr=[值1,值2,值3]; //隱式創(chuàng)建 var arr=new Array(值1,值2,值3); //直接實(shí)例化 var array=new Array(size); //創(chuàng)建數(shù)組并指定長(zhǎng)度
//方法一 var arr1 = [1,3,5,7,9]; //方法二 var arr2 = new Array(2,4,6,8,10); //方法三 var arr3 = new Array(3);//固定數(shù)組長(zhǎng)度為3 arr3[0] = 1; arr3[1] = 2; arr3[2] = 3;
(2)數(shù)組的三大屬性
length
數(shù)組定義時(shí)可以無(wú)需指定數(shù)組長(zhǎng)度
let arr4 = [1,3,52,5,2]; console.log(arr4.length);//5
constructor
let arr5 = [1,3,5,7]; console.log(arr5.constructor);//? Array() { [native code] }
prototype
prototype原型對(duì)象是javascript基于原型鏈表實(shí)現(xiàn)的一個(gè)重要屬性。
Javascript角度:1. 實(shí)例對(duì)象沒(méi)有prototype屬性,只有構(gòu)造函數(shù)才有prototype屬性,也就是說(shuō)構(gòu)造函數(shù)本身保存了對(duì)prototype屬性的引用。。2. prototype屬性對(duì)象有一個(gè)constructor屬性,保存了引用他自己的構(gòu)造函數(shù)的引用(看起來(lái)像是個(gè)循環(huán):A指向B,B指向A...) 3.prototype對(duì)象(不要被我這里的屬性對(duì)象,對(duì)象,對(duì)象屬性搞暈乎了,說(shuō)是屬性對(duì)象,就是說(shuō)當(dāng)前這個(gè)東西他首先是某個(gè)對(duì)象的屬性,同時(shí)自己也是個(gè)對(duì)象。對(duì)象屬性就是說(shuō)它是某個(gè)對(duì)象的屬性。)的屬性變量和屬性對(duì)象將會(huì)被該prototype對(duì)象引用的構(gòu)造函數(shù)所創(chuàng)建的對(duì)象繼承(function A(){} A.prototype.pa = function(){} var oA = new A(); 那么oA將會(huì)繼承屬性函數(shù)pa)。**
let arr6 = [1,2,4,5,6]; console.log(arr6.prototype)//undefined
一般我們用到的時(shí)候是這樣用的
let arr7 = [1,3,5,6,7,8]; Array.prototype.alert = function(){console.log("arr7")}//這里封裝的是數(shù)組的公有方法。 console.log(arr7.alert())//arr7
對(duì)于想要深入的了解請(qǐng)百度原型鏈模式,這樣您可以詳細(xì)的研究它的一些公有方法。
2、對(duì)象
(1)什么是對(duì)象。
對(duì)象定義:js中對(duì)象類型為一組無(wú)序的由鍵->值組成的數(shù)據(jù)集合,其元素的鍵名和值都可以自定義
它的定義方法有兩種。
var obj1 = {name:"zhang",age:355,id:1}; var obj2 = new Object({name:"zhang",age:234,id:2}) console.log(obj1["name"])//zhang console.log(obj2.length)//undefined
以上的例子我們可以得出:對(duì)象自身所擁有的(不包括繼承來(lái)的)任何屬性都是有用戶自定義的。
我們現(xiàn)在可以將數(shù)組和對(duì)象進(jìn)行一下比較,是不是感覺數(shù)組和對(duì)象很相像。
再舉出一個(gè)例子。我們進(jìn)行比較可能更直觀一些。
let ary = [2,2,4,5]; let o = {0:23,1:23,2:32,length:3}; console.log(ary[0],o[0]);//2,23 console.log(ary.length,o.length);//4,3
通過(guò)例子我們不難發(fā)現(xiàn):我們發(fā)現(xiàn)完全可以使用對(duì)象來(lái)模擬數(shù)組,只要我們定義的對(duì)象的每個(gè)元素的鍵名都使用數(shù)字并且讓其保持遞增,且動(dòng)態(tài)的定義一個(gè)length屬性來(lái)表示元素個(gè)數(shù),那么從效果上來(lái)說(shuō),基本就個(gè)數(shù)組相同了!
類數(shù)組對(duì)象:只包含使用從零開始,且自然遞增的整數(shù)做鍵名,并且定義了length表示元素個(gè)數(shù)的對(duì)象,我們就認(rèn)為它是類數(shù)組對(duì)象!
一般我們常用到的類數(shù)組對(duì)象如:arguments,獲取的元素集合
類數(shù)組對(duì)象不僅在效果上與數(shù)組相似,在某些操作上也是相同的。
//定義數(shù)組和類數(shù)組對(duì)象 let ary1 = [2,5,23,5,52]; let oo = {0:4,1:32,2:324,length:3}; //讀寫操作 console.log(ary1[1],oo[1],ary1["length"],oo["length"]);//5,32,5,3 ary1[0] = 4; oo[0] = 6; console.log(ary1[0],oo[0]);//4,6 //遍歷 for(var i=0;i通過(guò)簡(jiǎn)單的對(duì)比,我們不難看出,其實(shí)我們可以從數(shù)據(jù)結(jié)構(gòu)上把js中的數(shù)組歸為對(duì)象,因?yàn)槲覀兛梢允褂脤?duì)象來(lái)模擬數(shù)組,這里僅僅說(shuō)的是數(shù)據(jù)結(jié)構(gòu)上,其實(shí)它們本身所繼承來(lái)的方法和一些屬性是不同的。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/90009.html
摘要:但是,我們可以借用類數(shù)組方法不難看出,此時(shí)的在調(diào)用數(shù)組原型方法時(shí),返回值已經(jīng)轉(zhuǎn)化成數(shù)組了。很多時(shí)候,深入看看源代碼也會(huì)讓你對(duì)這個(gè)理解的更透徹。的前端樂(lè)園原文鏈接深入理解類數(shù)組 起因 寫這篇博客的起因,是我在知乎上回答一個(gè)問(wèn)題時(shí),說(shuō)自己在學(xué)前端時(shí)把《JavaScript高級(jí)程序設(shè)計(jì)》看了好幾遍。于是在評(píng)論區(qū)中,出現(xiàn)了如下的對(duì)話:showImg(https://segmentfault.c...
摘要:將對(duì)象轉(zhuǎn)換為數(shù)組對(duì)象的限制不知道現(xiàn)在還是否需要考慮這一點(diǎn)之前的版本將實(shí)現(xiàn)為對(duì)象而非對(duì)象,對(duì)象不能直接調(diào)用方法,因此需要采取其他方式轉(zhuǎn)化。 關(guān)于類數(shù)組對(duì)象 JavaScript中有一些著名的類數(shù)組對(duì)象,它們看起來(lái)很像數(shù)組: 擁有l(wèi)ength屬性 元素按序保存在對(duì)象中,可以通過(guò)索引訪問(wèn) 但實(shí)際和數(shù)組又不是一回事: 沒(méi)有數(shù)組的很多方法 也會(huì)有數(shù)組沒(méi)有的方法 (e.g. NodeLis...
摘要:也就是說(shuō),為一些常規(guī)對(duì)象增加一些屬性可以使其變成類數(shù)組對(duì)象。實(shí)際上,類數(shù)組的定義只有一條,具有屬性。在中,所有的數(shù)組方法都是通用的。 什么是類數(shù)組 javascript中一些看起來(lái)像卻不是數(shù)組的對(duì)象,叫做類數(shù)組。也就是說(shuō),為一些常規(guī)對(duì)象增加一些屬性可以使其變成類數(shù)組對(duì)象。 類數(shù)組的特征: 有索引(數(shù)字)屬性和length屬性的對(duì)象 不具有數(shù)組的方法。間接調(diào)用數(shù)組的一些方法,比如pus...
摘要:在同一個(gè)塊內(nèi),不允許用重復(fù)聲明變量。中為新增了塊級(jí)作用域。自帶遍歷器的對(duì)象有數(shù)組字符串類數(shù)組對(duì)象對(duì)象的對(duì)象等和結(jié)構(gòu)對(duì)象。返回一個(gè)遍歷器,使遍歷數(shù)組的鍵值對(duì)鍵名鍵值。 目錄 1.語(yǔ)法 2.類型、值和變量 3.表達(dá)式和運(yùn)算符 4.語(yǔ)句 5.數(shù)組 6.對(duì)象 7.函數(shù) 8.全局屬性和方法 9.詞法作用域、作用域鏈、閉包 10.原型鏈、繼承機(jī)制 11.this的理解 12.ES5新特性 13.E...
摘要:對(duì)對(duì)象進(jìn)行遍歷操作。對(duì)象沒(méi)有提供訪問(wèn)指定值的方法。所以石頭一般使用對(duì)象存放對(duì)象,然后檢查是否有某個(gè)值,使用數(shù)組取數(shù)據(jù)。返回是否刪除指定的對(duì)象。比如無(wú)法準(zhǔn)確地取出指定的值。應(yīng)該是做為一個(gè)數(shù)組對(duì)象的補(bǔ)充存在。 Set set類似數(shù)組。其成員的值都是唯一的。 數(shù)組去重 const set = new Set([1,2,3,2,4,2,3,4]) console.log(set) [......
閱讀 1010·2023-04-25 23:40
閱讀 3771·2021-11-22 15:22
閱讀 3622·2021-10-09 09:44
閱讀 3464·2021-09-23 11:52
閱讀 1324·2021-09-22 15:43
閱讀 841·2021-09-10 10:51
閱讀 2275·2021-09-06 15:02
閱讀 3271·2021-09-06 15:02