javascript 的call和apply
最后更新于
最后更新于
起因
我们知道arguments对象是函数中的参数对象,他很像一个数组,但是他并不是一个数组,在javascript中有很多这样的问题,我们可以看到下图中的函数参数数组和平常的数组类型是不相同的。
通过上面的对比我们可以明显的看到两个对象存在的不同,我们可以看到函数参数数组中是没有一些常用的数组操作方法的,那么如果我们想对函数参数数组进行普通数组的操作怎么办,举个例子,我们需要使用到slice方法:
以上代码中需要注意apply的第二个参数必须为数组或是伪数组,不然则会出现以下的报错:
call的用法:A对象拥有b方法,C对象想使用b方法,A.prototype.b.call(C),这里是以C对象替换A对象的位置,所以C对象就拥有了b方法。
apply的用法:apply的用法与call类似,需要注意的是apply的第二个参数为数组或是伪数组。
相关文章