zoukankan      html  css  js  c++  java
  • Array.prototype.slice.call(arguments,0);

    Array.prototype.slice.call(arguments,0);

    有过不少人问过我这么一个语句是什么意思,乍一看确实不好理解.

    我们把这样一段代码分开来解释一下.

    1.Array.prototype.slice

    slice的用法想必不用我多说,截取并返回数组的一部分;
    
    e.g:
    
    "JavaScript".slice(0,4);    //Java
    ["a","b","c","d"].slice(2,4)    //c,d
    
    可以这么说,有length属性的都可以使用slice方法

    2.call(arguments,0)

    call的用法我在前面的随笔中有过介绍,就是把call(arguments,0)括号中的arguments来代替Array.prototype来执行slice,那我们为什么不直接使用arguments.slice
    上文说到,有length的数组或者字符串才可以使用slice方法,然而 arguments == "object"
    Array.prototype.slice.call(arguments,0); 这句话就很好理解了;
    
    当然我们也可以写成 [].slice.call(arguments,0)

    再举个栗子!

    function foo(obj)

    {
      var args = [].slice.call(arguments,0);

      return args;
    }

    var a = new Object();

    console.log(foo(a));  //数组:Object;

    把Object对象强制转换为了数组Object;

    当然这个栗子不是很好,只是让大家了解一下用法而已.

  • 相关阅读:
    bfs,队列
    Wannafly挑战赛22 A计数器(裴蜀定理 gcd)
    素数筛模板
    HDU
    HDU
    控制精度-----直接截取,不需四舍五入
    jstl下载与配置
    B. Treasure Hunt
    动态数组vector
    Manacher算法
  • 原文地址:https://www.cnblogs.com/SmileCN/p/3084896.html
Copyright © 2011-2022 走看看