久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      在javascript中什么是偽數(shù)組

      在javascript中,偽數(shù)組又稱類數(shù)組,是一個(gè)類似數(shù)組的對(duì)象,是一種按照索引存儲(chǔ)數(shù)據(jù)且具有l(wèi)ength屬性的對(duì)象;因?yàn)槭菍?duì)象,所以偽數(shù)組不具有數(shù)組的push()、forEach()等方法。

      在javascript中什么是偽數(shù)組

      本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

      偽數(shù)組的定義和特性

      偽數(shù)組 (ArrayLike) ,又稱類數(shù)組。是一個(gè)類似數(shù)組的對(duì)象,是一種按照索引存儲(chǔ)數(shù)據(jù)且具有 length 屬性的對(duì)象。但是有如下幾個(gè)特征。

      • 按索引方式儲(chǔ)存數(shù)據(jù)

        0: xxx, 1: xxx, 2: xxx...

      • 具有length屬性

        但是length屬性不是動(dòng)態(tài)的,不會(huì)隨著成員的變化而改變

      • 不具有數(shù)組的push()、forEach()等方法

        arrayLike.__proto__ === Object.prototype;   //true  arrayLike instanceof Object; //true  arrayLike instanceof Array; //false

      常見的典型偽數(shù)組,包括jQuery中通過 $() 獲取的DOM元素集, 函數(shù)中的的 arguments 對(duì)象, 以及字符串String對(duì)象。

      例子:

          var arrLike = {         0: 'a',         1: 'b',         2: 'c',         length: 3,     }     arrLike[1]; //'a'     arrLike.length; //3     arrLike.push('d'); //Uncaught TypeError: arrLike.push is not a function

      偽數(shù)組轉(zhuǎn)化成真數(shù)組的方法

          var arrLike = {         0: 'a',         1: 'b',         2: 'c',         length: 3,     };

      1、遍歷添加入一個(gè)空數(shù)組

          var arr = [];     for(var i = 0; i < arrLike.length; i++){         arr.push(arrLike[i]);     }

      比較簡單易懂,但是步驟略顯繁瑣。

      2、利用數(shù)組的slice()方法 【推薦】

          ;[].slice.call(arrLike);

      或者

          Array.prototype.slice.apply(arrLike);

      使用slice()返回一個(gè)新的數(shù)組,用call()或apply()把他的作用環(huán)境指向偽數(shù)組。

      注意這個(gè)返回的數(shù)組中,不會(huì)保留索引值以外的其他額外屬性。

      比如jQuery中$()獲取的DOM偽數(shù)組,里面的context屬性在被此方法轉(zhuǎn)化之后就不會(huì)保留。

      模擬一下slice()的內(nèi)部實(shí)現(xiàn)

          Array.prtotype.slice = function(start, end){         var result = new Array();         var start = start | 0;         var end = end | this.length;         for(var i = start; i < end; i++){             result.push(this[i]);         }         return result;     }

      3、修改原型指向

          arrLike.__proto__ = Array.prototype;

      這樣arrLike就繼承了Array.prototype中的方法,可以使用push(),unshift()等方法了,length值也會(huì)隨之動(dòng)態(tài)改變。

      另外這種直接修改原型鏈的方法,還會(huì)保留下偽數(shù)組中的所有屬性,包括不是索引值的屬性。

      4、ES2015中的Array.from()方法

      Array.from() 方法從一個(gè)類似數(shù)組或可迭代對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。

          var arr = Array.from(arrLike);

      得到的結(jié)果與第二種方法類似,只保留索引值內(nèi)的屬性。

      【推薦學(xué)習(xí):javascript高級(jí)教程】

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)