"call、apply、bind的区别?"

call、apply、bind的区别?

共同点:
call apply bind都可以改变函数调用的this指向

区别

  • call跟apply的用法几乎一样,唯一的不同就是传递的参数不同,call只能一个参数一个参数的传入。
    apply则只支持传入一个数组,哪怕是一个参数也要是数组形式。
  • bind方法是直接改变这个函数的this指向并且返回一个新的函数,之后再次调用这个函数的时候this都是指向bind绑定的第一个参数。bind传餐方式跟call方法一致。

示例

// call
console.log(Math.max.call(null, 1,2,3,4,5)); // 5
// apply
console.log(Math.max.apply(null, [1,2,3,4,5])); // 5
// bind
console.log(Math.max.bind(null, 1,2,3,4,5)()); // 5
PS:写作不易,如要转裁,请标明转载出处。
登录
注册
回顶部