区别总结

  1. 三个方法的第一个参数都是 this 的指向对象
  2. call 的参数直接放进去可以用逗号分隔即可
  3. apply的参数是一个数组,传入参数必须放在数组里面
  4. bind传参和call一样,但是返回的是函数不会立即执行

call的使用 [调用该方法后函数会立即执行]

  • call( this , ‘参数1’ , ‘参数2’ , ‘参数3’ , ‘参数N’ , … )
  • 从第二个开始就是参数,可以放N个参数逗号分隔即可 ```javascript function a(v1,v2,v3){ console.log(‘this指向:’,this) // {“name”:”我是this”,”age”:18}
    1. console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'
    }

const user = { name:”我是this”, age:18 }

a.call(user,’1号选手’,’2号选手’,’N号选手’)

  1. <a name="CDpo5"></a>
  2. #### apply的使用 [调用该方法后函数会立即执行]
  3. - apply(this,[ '参数1' , '参数2' , '参数3' , '参数N' , ... ])
  4. - apply共接收2个参数, 第一个是this指向,**第二个必须为数组**!数组内表示传入参数
  5. ```javascript
  6. function a(v1,v2,v3){
  7. console.log('this指向:',this) // {"name":"我是this","age":18}
  8. console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'
  9. }
  10. const user = {
  11. name:"我是this",
  12. age:18
  13. }
  14. a.apply(user,['1号选手','2号选手','N号选手'])

bind 的使用 [调用该方法返回的函数需手动调用执行]

  • bind(this , ‘参数1’ , ‘参数2’ , ‘参数3’ , ‘参数N’ , … )( 新函数的参数 )
  • 从第二个开始就是拓展参数,可以放N个参数逗号分隔即可,并返回新函数
  1. function a(v1,v2,v3,newParams){
  2. console.log('this指向:',this) // {"name":"我是this","age":18}
  3. console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'
  4. console.log(newParams) // 新参数
  5. }
  6. const user = {
  7. name:"我是this",
  8. age:18
  9. }
  10. const newFunc = a.bind(user,['1号选手','2号选手','N号选手'])
  11. newFunc('新参数')