js-call-apply-bind
call/apply/bind 总体上都是改变调用对象的this指向。
apply()/call()
apply()/call()类似,差别只在给函数传入参数的方式不一样。
1 | fun.call(thisArg[, arg1[, arg2[, arg3[, ...]]]]); |
apply()方法第二参数也可以支持类数组对象。
bind()
1 | fun.bind(thisArg[, arg1[, arg2[, ...]]]); |
bind() 方法不同在于
- 通过bind修改了this指向后返回原函数拷贝,并不会默认执行。
- 参数可以执行时再添加,参数按照形参顺序依次读入。
- bind第一个参数指定this指向,该参数不能被重写,即只能被绑定一次。