区别总结
- 三个方法的第一个参数都是 this 的指向对象
- call 的参数直接放进去可以用逗号分隔即可
- apply的参数是一个数组,传入参数必须放在数组里面
- bind传参和call一样,但是返回的是函数不会立即执行
call的使用 [调用该方法后函数会立即执行]
- call( this , ‘参数1’ , ‘参数2’ , ‘参数3’ , ‘参数N’ , … )
- 从第二个开始就是参数,可以放N个参数逗号分隔即可
```javascript
function a(v1,v2,v3){
console.log(‘this指向:’,this) // {“name”:”我是this”,”age”:18}
}console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'
const user = { name:”我是this”, age:18 }
a.call(user,’1号选手’,’2号选手’,’N号选手’)
<a name="CDpo5"></a>#### apply的使用 [调用该方法后函数会立即执行]- apply(this,[ '参数1' , '参数2' , '参数3' , '参数N' , ... ])- apply共接收2个参数, 第一个是this指向,**第二个必须为数组**!数组内表示传入参数```javascriptfunction a(v1,v2,v3){console.log('this指向:',this) // {"name":"我是this","age":18}console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'}const user = {name:"我是this",age:18}a.apply(user,['1号选手','2号选手','N号选手'])
bind 的使用 [调用该方法返回的函数需手动调用执行]
- bind(this , ‘参数1’ , ‘参数2’ , ‘参数3’ , ‘参数N’ , … )( 新函数的参数 )
- 从第二个开始就是拓展参数,可以放N个参数逗号分隔即可,并返回新函数
function a(v1,v2,v3,newParams){console.log('this指向:',this) // {"name":"我是this","age":18}console.log(v1,v2,v3) // '1号选手','2号选手','N号选手'console.log(newParams) // 新参数}const user = {name:"我是this",age:18}const newFunc = a.bind(user,['1号选手','2号选手','N号选手'])newFunc('新参数')
