摘要:定義類數(shù)組對象的定義可以通過索引訪問元素,并且擁有屬性沒有數(shù)組的其他方法,例如,,等。所以當后面的作用對象是一個類數(shù)組時,就會把這個類數(shù)組對象轉換為了一個新的數(shù)組。
定義
JavaScript 類數(shù)組對象的定義:
可以通過索引訪問元素,并且擁有 length 屬性;
沒有數(shù)組的其他方法,例如 push , forEach , indexOf 等。
舉例說明
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 }轉換
如果類數(shù)組對象需要轉化為數(shù)組,可以用 Array.prototype.slice.call
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 } var arr = Array.prototype.slice.call(foo);
其實一開始看到這個表達式感覺比較費解,后來查了一些資料,終于明白了,特別做一些說明:
第一, foo 本來是沒有 slice 方法的, Array.prototype.slice.call(foo) 這個表達式相當于賦予 foo 這個對象 slice 方法。
第二, Array.prototype.slice.call(foo); 相當于 Array.prototype.slice.call(foo, 0); 是把取一個數(shù)組(或者類數(shù)組)的子集,并作為一個數(shù)組返回。所以當后面的作用對象是一個類數(shù)組時,就會把這個類數(shù)組對象轉換為了一個新的數(shù)組。
所以,上面的一段代碼等價于
var foo = { 0: "Java", 1: "Python", 2: "Scala", length: 3 } foo.slice = Array.prototype.slice; foo.slice();特性
類數(shù)組只有索引值和長度,沒有數(shù)組的各種方法,所以如果要類數(shù)組調用數(shù)組的方法,就需要使用 Array.prototype.method.call 來實現(xiàn)。
例如,如果遍歷一個類數(shù)組,可以這樣實現(xiàn):
Array.prototype.forEach.call(foo, function(item){ console.log(item); });
添加一個元素
Array.prototype.push.call(foo, "PHP"); // foo = {0: "Java", 1: "Python", 2: "Scala 111", 3: "PHP", length: 4}
原文:https://blog.taotao.io/javascript-array-like-object/
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79716.html
摘要:但是,我們可以借用類數(shù)組方法不難看出,此時的在調用數(shù)組原型方法時,返回值已經(jīng)轉化成數(shù)組了。很多時候,深入看看源代碼也會讓你對這個理解的更透徹。的前端樂園原文鏈接深入理解類數(shù)組 起因 寫這篇博客的起因,是我在知乎上回答一個問題時,說自己在學前端時把《JavaScript高級程序設計》看了好幾遍。于是在評論區(qū)中,出現(xiàn)了如下的對話:showImg(https://segmentfault.c...
摘要:在客戶端中,一些方法等也返回類數(shù)組對象。對象接下來重點講講對象。在函數(shù)體中,指代該函數(shù)的對象。下一篇文章深入之創(chuàng)建對象的多種方式以及優(yōu)缺點深入系列深入系列目錄地址。 JavaScript深入系列第十三篇,講解類數(shù)組對象與對象的相似與差異以及arguments的注意要點 類數(shù)組對象 所謂的類數(shù)組對象: 擁有一個 length 屬性和若干索引屬性的對象 舉個例子: var array = ...
摘要:也就是說,為一些常規(guī)對象增加一些屬性可以使其變成類數(shù)組對象。實際上,類數(shù)組的定義只有一條,具有屬性。在中,所有的數(shù)組方法都是通用的。 什么是類數(shù)組 javascript中一些看起來像卻不是數(shù)組的對象,叫做類數(shù)組。也就是說,為一些常規(guī)對象增加一些屬性可以使其變成類數(shù)組對象。 類數(shù)組的特征: 有索引(數(shù)字)屬性和length屬性的對象 不具有數(shù)組的方法。間接調用數(shù)組的一些方法,比如pus...
摘要:中常見的類數(shù)組有對象和方法的返回結果。類數(shù)組判斷權威指南上給出了代碼用來判斷一個對象是否屬于類數(shù)組。此處應當為類數(shù)組表現(xiàn)之所以成為類數(shù)組,就是因為和數(shù)組類似。偽數(shù)組轉化成數(shù)組非偽類對象,直接返回最好針對以前的實現(xiàn)參考的怪癖類數(shù)組對象 在線的《javascript權威指南》有對該概念的解釋。 那么,什么是javascript 類數(shù)組呢? 定義: 擁有l(wèi)ength屬性,length-0可...
摘要:屬性是一個值或一組值以數(shù)組或對象的形式,是對象的成員。可以使用內置構造函數(shù)和創(chuàng)建包裝對象。因此下面的代碼將會使人很迷惑結果結果,此數(shù)組長度為應該盡量避免使用數(shù)組構造函數(shù)創(chuàng)建新數(shù)組。給數(shù)組對象添加返回數(shù)組中最大元素值的方法。 對象部分 Object類型 Object 是一個無序的集合,可以存放任意類型對象,所有其他對象都繼承自這個對象。創(chuàng)建Object類型有兩種,一種是使用new運算符,...
閱讀 2222·2021-09-07 09:58
閱讀 3400·2019-08-30 14:07
閱讀 1310·2019-08-29 12:32
閱讀 676·2019-08-29 11:06
閱讀 3700·2019-08-26 18:18
閱讀 3737·2019-08-26 17:35
閱讀 1387·2019-08-26 11:35
閱讀 617·2019-08-26 11:35