javascript 偽數組和轉化為標準數組

來源:互聯網
上載者:User

標籤:length   lob   target   java   des   arguments   push   function   實現   

1: 什麼是偽數組

偽數組是一個含有length屬性的json對象,

它是按照索引的方式儲存資料,

它並不具有數組的一些方法,只能能通過Array.prototype.slice轉換為真正的數組,並且帶有length屬性的對象。

   

    var obj = {0:‘a‘,1:‘b‘,length:2}; // 偽數組    var arr = Array.prototype.slice.call(obj); // 轉化為數組        console.log(arr);  // 返回["a","b"]

 

2:它和數組的關係

都是類比集合

 

3:為什麼會有偽數組

在日常開發中,有許多的對象是由偽數組組成,比如函數內arguments對象,還有像調用getElementsByTagName,document.childNodes之類的,它們都返回NodeList對象都屬於偽數組.

 

4:為什麼使用Array.prototype.slice.call()方法可以將偽數組轉化數組

其實我們也可以通過[].slice.call這種形式實現同樣的效果,但是通過prototype的形式執行程式效率更高,同樣代碼也更加優美。 

這個是V8引擎中Array.js對slice方發的實現過程,有興趣的同學可以研究下。

我理解的大概思路就是 ↓ ,可能不對,僅供參考。

12345678 function slice(obj) {    var arr =[];    var len = obj.length; // length 正好對應偽數組中的length屬性    for(var i = 0;i < len;i++){        arr.push[i] = obj[i]; // i 正好對應偽數組中的索引值    }    return arr;}

 

 

5:Jquery與偽數組 

其實Jquery內部大量運用了偽數組。可以說整個Jquery對象,都是構建在偽數組的基礎之上的。

javascript 偽數組和轉化為標準數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.