• jQuery.makeArray() 函数详解


    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); // false
    
    var arr = $.makeArray(obj);
    w(arr instanceof Array); // true
    w(arr.join(" ")); // CodePlayer Hello 18 true
    w(arr.length); // 4
    
    var obj2 = {};
    obj2[2] = "DIY";
    obj2.length = 1;
    var arr2 = $.makeArray(obj2);
    w(arr2 instanceof Array); // true
    w(arr2.length); // 1
    
    var obj3 = {};
    obj3.length = 0;
    var arr3 = $.makeArray(obj3);
    w(arr3 instanceof Array); // true
    w(arr3.length); // 0
    
    var obj4 = {};
    // 由于obj4没有length属性,直接将其转换为结果数组中的一个元素
    var arr4 = $.makeArray(obj4);
    w(arr4 instanceof Array); // true
    w(arr4.length); // 1
    w(arr4[0]); // [object Object]
    
    // 虽然字符串有length属性,但它仍被视作结果数组中的一个元素
    var arr5 = $.makeArray("CodePlayer");
    w(arr5 instanceof Array); // true
    w(arr5.length); // 1
    w(arr5[0]); // CodePlayer

    我们常用的jQuery对象、NodeList对象、arguments对象也都是类数组对象。

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

    摘自:http://www.365mini.com/page/jquery_makearray.htm

  • 相关阅读:
    机器学习:深入理解 LSTM 网络 (一)
    熵、交叉熵、相对熵(KL 散度)意义及其关系
    熵、交叉熵、相对熵(KL 散度)意义及其关系
    概率分布的 perplexity
    概率分布的 perplexity
    ImageNet 数据集
    i++与++i的区别,使用实例说明
    [置顶] ARM指令集和常用寄存器
    求大数阶数
    Wi-Fi漫游的工作原理
  • 原文地址:https://www.cnblogs.com/yuqingfamily/p/5792731.html
Copyright © 2020-2023  润新知