call ,apply , bind 区别
都是替换函数中不想要的this, call 和 apply 是临时的, bind 是永久的
call:
call(thisObj, obj1, obj2...)
要求传入函数的参数必须单独传入
apply:
apply(thisObj, [argArray])
要求传入函数的参数必须放入数组中整体传入
apply会将数组打散为单个参数值分别传入
bind:
永久绑定函数中的this, 作用如下:
- 创建一个和原函数功能完全一样的新函数.
- 将新函数中的this永久绑定为指定对象
- 将新函数中的部分固定参数提前永久绑定
call 与 apply 的 thisObj: 在fun函数运行时指定的this值。需要注意的是,指定的 this 值并不一定是该函 数执行时真正的this值,如果这个函数处于非严格模式下,则指定为 null 和 undefined的this值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。
apply传入的参数是数组,call和bind是参数列表的形式;
call和apply是立即执行,bind不是立即执行。