zoukankan      html  css  js  c++  java
  • Javascript中将函数参数arguments转为数组

    1. arguments为什么不是数组?如何证明?

    arguments 是没有数组的slice等方法的,所以不是Array类型的。

    验证:

    function testargs(){
        var arr=[1,2,3];
        console.log(typeof arguments.slice);
        console.log(typeof arr.slice);
    }
    testargs();

    输出:

    undefined
    function

    当然,还可以通过其他方式来证明,比如说看constructor等等。

    2. 如何转为数组?

    使用Array的slice方法,如下:

    function arg2arr(){
        var arr = Array.prototype.slice.call(arguments);
        console.log(arr);
    }
    arg2arr(1,2,3);

    输出:[1,2,3]

    还可以写成这样:

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

    3. 如何使用原生JS实现自己的slice方法

    Array.prototype.slice = function(start,end){
          var result = new Array();
          start = start || 0;
          end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
          for(var i = start; i < end; i++){
               result.push(this[i]);
          }
          return result;
     }

    4. JS中有没有toArray方法?如果没有,如何自己实现一个?

    var toArray = function(s){
         try{
             return Array.prototype.slice.call(s);
         } catch(e){
                 var arr = [];
                 for(var i = 0,len = s.length; i < len; i++){
                     //arr.push(s[i]);
                       arr[i] = s[i];  //据说这样比push快
                 }
                  return arr;
         }
     }
  • 相关阅读:
    dubbo官方文档笔记
    maven权威指南读书笔记
    ArrayList实现
    通过json把int[]转成Integer[]
    二分查找,希尔排序,欧几里得,斐波那契
    js快捷键设置
    java字符串和时间转换
    希尔排序动画
    vue render
    前端性能优化,算法
  • 原文地址:https://www.cnblogs.com/jiji262/p/3041185.html
Copyright © 2011-2022 走看看