视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
jQuery中关于.makeArray()函数的使用详解
2020-11-27 20:16:01 责编:小采
文档


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);

    下载本文
    显示全文
    专题