2022-10-31 21:29:26
call()、apply()、bind() 都是 JavaScript 中用于改变函数执行时 this 指向的方法,但它们在参数传递和返回值上存在差异。
call()
作用:立即调用函数,并指定 this 的指向。
参数传递:第一个参数是 this 的指向对象,后续参数以逗号分隔依次传入。
示例:
obj.myFun.call(_this, 'param1', 'param2');apply()
作用:立即调用函数,并指定 this 的指向。
参数传递:第一个参数是 this 的指向对象,第二个参数必须是数组(或类数组对象),数组元素作为参数传入。
示例:
obj.myFun.apply(_this, ['param1', 'param2']);bind()
作用:返回一个新函数,不会立即调用。新函数的 this 被永久绑定到第一个参数指定的对象。
参数传递:第一个参数是 this 的指向对象,后续参数以逗号分隔依次传入(类似 call()),但返回的是函数,需手动调用执行。
示例:
const boundFun = obj.myFun.bind(_this, 'param1', 'param2');boundFun(); // 手动调用关键区别总结:
使用场景建议: