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