【Javascript】apply和call的区别

原创 amandakelake 随笔 JavaScript 280阅读 2017-05-22 22:57:37 举报

综合了前人和各位大神的成果,终于感觉自己稍懂那么一点apply和call了

1、定义:call和apply是什么?
call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。
call 和 apply二者的作用完全一样,只是接受参数的方式不太一样。

2、基础用法范例(实现继承)
javascript 代码

this:代表的是student,表示将Person中的this指向student。
arguments:是一个数组,在例子中表示['谜','10','一年级'];
通俗一点讲就是:用student去执行Person这个类里面的内容,在Person这个类里面存在this.name等之类的
语句,这样就讲属性创建到了student对象里面*/

3、两者的区别(唯一的区别)
call和apply的区别是传参的格式
apply是arguments(数组)对象作为参数,而call则是要把需要传的参数一一列出

4、其他用法
①“劫持”别人的方法
javascript 代码

②类数组
类数组
这里把符合以下条件的对象称为类数组
1.具有length属性
2.按索引方式存储数据
3.不具有数组的push,pop等方法
常见类数组有 arguments,NodeList!
javascript 代码

这样就往arguments中push一个4进去了

Array.prototype.push 页可以实现两个数组合并
同样push方法没有提供push一个数组,但是它提供了push(param1,param,…paramN) 所以同样也可以通过apply来装换一下这个数组,即:
html 代码

arr1调用了push方法,参数是通过apply将数组装换为参数列表的集合.

求类数组中的最大值
javascript 代码

③判断类型
javascript 代码

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复