将js中类数组转换为真正的数组

使用Array.prototype.slice.call(arguments);

提到这个,就不得不说一下call()和apply()这两个方法

call:B.call(A, arguments)   A,B为两个对象,arguments为参数,可以传入多个,此方法可以使得A对象去调用B对象的方法

apply:B.apply(A, arguments)  A,B为两个对象,arguments为参数,只能以数组的形式传入参数,此方法可以使得A对象去调用B对象的方法

我们来看一个例子:

```

function add(a,b)

    alert(a+b); 

functionsub(a,b)

    alert(a-b); 

add.call(sub,1,1);//  结果是?  ‘2’  还是  ‘0’  呢

```

call 就是中间牵线的,sub说 我需要 add 你的方法 和技能,

比如:add会飞天 ,但sub 不会飞,现在sub想飞,但add不让它飞,所以sub就叫来了 call 这个东西, call直接把add爆菊

加上一个 点 然后把sub抱到括号里,然后 sub 就直接把add 的“飞天”技能学会了,回到函数

function add(a,b)

    alert(a+b); 

functionsub(a,b)

    alert(a-b); 

add.call(sub,1,1);

//  结果是sub直接集成了add的“飞天”技能subalert里面 直接变成了 “a+b”!主角还是sub,并不是add

例子部分转自https://blog.csdn.net/xllily_11/article/details/51480723

接下来回到我们的问题,我们使用Array.prototype.slice.call(arguments)将函数中的类数组转换成的真正的数组,

我们使得arguments调用了Array对象中的slice方法,这里要注意slice,首先,slice有两个用法,一个是String.slice,

一个是Array.slice,第一个返回的是字符串,第二个返回的是数组

这里我们的slice方法没有写参数,默认从’0‘”开始切割至末尾,我们主要是利用Array.slice方法返回数组把其转换成真正的数组。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Javascript有很多数组的方法,有的人有W3C的API,还可以去MDN上去找,但是我觉得API上说的不全,M...
    顽皮的雪狐七七阅读 4,186评论 0 6
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,281评论 0 3
  • 第一章1,什么叫程序:程序就是计算机按照人类完成事物的步骤和逻辑,通过计算机命令来逐步执行最终实现目标的一种机器语...
    悟名先生阅读 977评论 0 4
  • 昨天被后来的我们刷屏,晚上我也去看了夜场,最早知道这部电影是来自于微博的推送,看了预告觉得不错,那个时候就...
    秦雨希阅读 308评论 0 4
  • 热爱写作的小伙伴们,是否曾经有过这样的写作经历: 你的脑海里有个非常好的想法,努力写出来以后,发现似乎并不是你当初...
    余老诗写作课阅读 1,679评论 6 26