js-call-apply-bind

call/apply/bind 总体上都是改变调用对象的this指向。

apply()/call()

apply()/call()类似,差别只在给函数传入参数的方式不一样。

1
2
3
fun.call(thisArg[, arg1[, arg2[, arg3[, ...]]]]);

fun.apply(thisArg, args);

apply()方法第二参数也可以支持类数组对象。

bind()

1
fun.bind(thisArg[, arg1[, arg2[, ...]]]);

bind() 方法不同在于

  1. 通过bind修改了this指向后返回原函数拷贝,并不会默认执行。
  2. 参数可以执行时再添加,参数按照形参顺序依次读入。
  3. bind第一个参数指定this指向,该参数不能被重写,即只能被绑定一次。

详细用法

call apply bind