首頁  >  文章  >  web前端  >  jQuery中關於​​.makeArray()函數的使用詳解

jQuery中關於​​.makeArray()函數的使用詳解

黄舟
黄舟原創
2017-07-19 09:22:311470瀏覽

jQuery.makeArray()函數用來將一個類別陣列物件轉換為真正的數組物件

所謂"類別數組對象"就是一個常規的Object對象,但它和數組對象非常相似:具備length屬性,並以0、1、2、3…等數字作為屬性名。

不過畢竟它不是數組,沒有從數組的原型物件上繼承下來的內建方法(例如:push()、 sort()等)。


jQuery.makeArray( object )

#注意事項

  • 一個類別數組對象,它至少應該具備length屬性,即使其值為0,它可以沒有"元素"(相當於空數組)。

  • 如果參數object沒有length屬性,則它不是類別陣列物件。 jQuery.makeArray()會直接將其視為結果陣列中的一個元素。

  • String物件雖然有length屬性,但一般不將其視為類別陣列物件。該函數仍然直接將其視為結果數組中的一個元素。

  • 如果物件的最大數字屬性大於或等於length屬性,則以length屬性為準,大於或等於其值的數字屬性將被忽略。

傳回值

jQuery.makeArray()函數的回傳值為Array型別,傳回轉換後的陣列物件。

-------------------------------------------------- -------------------------------------------------

類別數組物件是非常常見的,例如我們經常使用的jQuery物件NodeList物件以及函數內的arguments對象,都是類別數組物件。它們都具有length屬性,而且透過數字屬性來存取對應的元素或參數。不過,它們畢竟不是真正的數組對象,因此無法使用數組對方的內建方法。透過jQuery.makeArray()函數,我們可以將類別數組物件轉換為一個真正的數組對象,從而使用數組對象的內建方法。

栗子:


//在当前页面内追加换行标签和指定的HTML内容function w(html) {    //document.body.innerHTML += "<br/>" + html;    console.log(html);
}var obj = {    0: "CodePlayer",    1: "Hello",    2: 18,    3: true};
obj.length = 4;// 类数组对象不是真正的数组w(obj instanceof Array); // falsevar arr = $.makeArray(obj);
w(arr instanceof Array); // truew(arr.join(" ")); // CodePlayer Hello 18 truew(arr.length); // 4var obj2 = {};
obj2[2] = "DIY";
obj2.length = 1;var arr2 = $.makeArray(obj2);
w(arr2 instanceof Array); // truew(arr2.length); // 1var obj3 = {};
obj3.length = 0;var arr3 = $.makeArray(obj3);
w(arr3 instanceof Array); // truew(arr3.length); // 0var obj4 = {};// 由于obj4没有length属性,直接将其转换为结果数组中的一个元素var arr4 = $.makeArray(obj4);
w(arr4 instanceof Array); // truew(arr4.length); // 1w(arr4[0]); // [object Object]// 虽然字符串有length属性,但它仍被视作结果数组中的一个元素var arr5 = $.makeArray("CodePlayer");
w(arr5 instanceof Array); // truew(arr5.length); // 1w(arr5[0]); // CodePlayer

我們常用的jQuery物件、NodeList物件、arguments物件也都是類別陣列對象。


// jQuery对象也是一个类数组对象var $p = $("p");var arr1 = $.makeArray( $p );
w( $p instanceof Array ); // falsew( arr1 instanceof Array ); // true// NodeList对象也是一个类数组对象var p = document.getElementsByTagName("p");var arr2 = $.makeArray( p );
w( p instanceof Array ); // falsew( arr2 instanceof Array ); // truefunction foo(a, b){    // arguments对象也是一个类数组对象
    var arr3 = $.makeArray( arguments );
    w( arguments instanceof Array ); // false   
    w( arr3 instanceof Array ); // true}

foo(1, 2);

 

#

以上是jQuery中關於​​.makeArray()函數的使用詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn