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