call ,apply , bind 区别

都是替换函数中不想要的this, call 和 apply 是临时的, bind 是永久的

call: call(thisObj, obj1, obj2...)

要求传入函数的参数必须单独传入

apply: apply(thisObj, [argArray])

要求传入函数的参数必须放入数组中整体传入

apply会将数组打散为单个参数值分别传入

bind: 永久绑定函数中的this, 作用如下:

  1. 创建一个和原函数功能完全一样的新函数.
  2. 将新函数中的this永久绑定为指定对象
  3. 将新函数中的部分固定参数提前永久绑定

call 与 apply 的 thisObj: 在fun函数运行时指定的this值。需要注意的是,指定的 this 值并不一定是该函 数执行时真正的this值,如果这个函数处于非严格模式下,则指定为 null 和 undefined的this值会自动指向全局对象(浏览器中就是window对象),同时值为原始值(数字,字符串,布尔值)的this会指向该原始值的自动包装对象。

apply传入的参数是数组,call和bind是参数列表的形式;

call和apply是立即执行,bind不是立即执行。

posted @ 2023-02-10 10:41  芬-mi  阅读(11)  评论(0编辑  收藏  举报