zoukankan      html  css  js  c++  java
  • javascript 中的类数组和数组

      什么是类数组呢?

      我们先来看一段代码:  

    function fn() {
        console.dir(arguments);
    }
    fn(1,2,3,4,5,6,7,8,9,10);

    这段代码的执行后,在 chrome 浏览器的控制台中,结果如下:

     函数 fn 执行的时候,函数内的 arguments 对象就是一个类数组。它和数组一样,以从小到大的数字作为属性名,而且还有一个 length 属性,而这个 length 属性的值恰好就是  10, 和数字作为下标的属性名的个数一致。这点和数组很一致,但是同时,我们发现这个 arguments 对象并没有数组的 splice 等方法。

      数组是这样的。

     但是既然类数组和数组一样,以逐渐递增的数字作为属性名,同时又有 length 属性,那么咱们就可以借助数组的方法来操作类数组。

      我们来手动构造一个类数组。

    var obj = {
        0:0,
        1:1,
        2:2,
        3:3,
        4:4,
        length:5,
        typeName:"object"
    }

      我们想要把这个类数组上的值复制到一个数组中,那么咱们可以这样来做:  

    var ary = [].splice.call(obj, 0);

     通过借用数组上的 splice 方法,来把类数组的值 copy 到 ary 中。那么究竟为啥可以这么做呢?

     我们来解析下这个代码:

      [].splice;找到数组上的 splice 方法;

      [].splice.call(obj,0);把 splice 方法执行的 this 关键字换成 obj;这样就用 splice 方法去操纵 obj 了。

  • 相关阅读:
    过渡效果
    生命周期
    事件处理
    列表的搜索和排序
    DotNetBar for Windows Forms 12.1.0.0_冰河之刃重打包版 原创发布
    DotNetBar for Windows Forms 11.8.0.8冰河之刃重打包版
    闲读
    POJ 3253 Fence Repair 贪心 优先级队列
    POJ 2431 Expedition 贪心 优先级队列
    优先级队列-堆-STL实现
  • 原文地址:https://www.cnblogs.com/alicePanZ/p/4853340.html
Copyright © 2011-2022 走看看