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

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

  • 相关阅读:
    使用PyDNS查询
    C#结构体
    使用CreateProcess函数运行其他程序
    运算符重载
    C#学习抽象类和方法
    sed命令使用
    Python For Delphi 示例
    建立Socket
    使用 lambda 函数
    C#接口实现
  • 原文地址:https://www.cnblogs.com/SmileCN/p/3084896.html
Copyright © 2020-2023  润新知