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;

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

  • 相关阅读:
    OC
    提取AppDelegate.m中的"RDVTabBarController"第三方框架的方法
    spring_aop
    spring_xml配置&依赖注入
    关于idea运行web项目时出现的浏览器问题
    Java中main方法参数类型个人粗略理解
    函数式编程_lambda
    反射_注解
    pl/sql使用小技巧
    触发器&索引&视图
  • 原文地址:https://www.cnblogs.com/SmileCN/p/3084896.html
Copyright © 2011-2022 走看看