一、call、apply、bind的异同
JavaScript中函数可以通过3种方法改变自己的this指向,它们是call、apply、bind。它们3个非常相似,但是也有区别。下面表格可以很直观看出三者的不同
方法 | 是否直接执行函数 | 传入的参数 | 调用方式 |
call | 是 |
(context,arg1,arg2,arg3...) 第二个参数之后都是实参 |
function.call(context,arg1,arg2,arg3...) |
apply | 是 |
(context,[arg1,arg2,arg3...]) 第二个参数必须是数组 |
function.apply(context,[arg1,arg2,arg3...]) |
bind | 否 |
(context) 只有一个参数 |
var newFunction = function.bind(context); newFunction(arg1,arg2,arg3...) |
二、实例:
1、call
1 |
|
2、apply
1 |
|
3、bind
1 |
|
三、常用场景
1、数组之间追加
1 |
|
2、获取数组中的最大值和最小值
1 |
|
3、验证是否是数组(前提是toString()方法没有被重写过)
1 |
|
4、类(伪)数组使用数组方法
1 |
|
5、数字求和
1 |
|