博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript中将函数参数arguments转为数组
阅读量:7093 次
发布时间:2019-06-28

本文共 1173 字,大约阅读时间需要 3 分钟。

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

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

验证:

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

输出:

undefinedfunction

当然,还可以通过其他方式来证明,比如说看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;     } }

 

转载于:https://www.cnblogs.com/jiji262/archive/2013/04/24/3041185.html

你可能感兴趣的文章
SecureCRT 字体 颜色 修改 背景色 键盘映射 Home end delete
查看>>
【内核】Linux 2.6 内存反向映射机制 Reverse Mapping
查看>>
jQuery实现删除option控件下的元素
查看>>
Qt中translate、tr关系 与中文问题
查看>>
反射的两个过滤枚举
查看>>
Android编程之常识 - 混淆
查看>>
源码分析六(org.springframework.util包之Assert类)
查看>>
源码分析八(org.springframework.util包之StringUtils类))
查看>>
#include<> 和 #include""的区别
查看>>
【转】最近很火的 Safe Area 到底是什么
查看>>
java EE 环境配置(JDK + Tomcat + Eclipse for java EE)
查看>>
【转】【Python】Python正则表达式使用指导
查看>>
c#去掉guid中间的横杆
查看>>
Java架构-(十二) 整合spring cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
查看>>
ReactNative干货分享——视频播放器App
查看>>
详解 PHP 数组的底层实现:HashTable
查看>>
函数式点滴--partial&curry
查看>>
wokerman启动分析
查看>>
PHP数组排序算法实现(14种)
查看>>
CSS3总结系列0
查看>>