apply :
阅读js高级程设笔记
- 使用apply改变this指向,并调用
- 有两个参数
- 第一个参数是this指向谁,第二参数是一个数组用于传递参数
- 第二参数可以是argument
function showSum(num1, num2) {
console.log(this, num1 + num2);
}
let arr = [3, 4]
showSum.apply(new Date(), arr)
//第二行打印结果
Sun Nov 08 2020 16:37:59 GMT+0800 (中国标准时间) 7
call :
- call方法作用与apply相同
- 区别在于参数不同
- 第一个参数是this不变 变化的是其余参数都直接传递给函数
function showSum(num1, num2) {
console.log(this, num1 + num2);
}
showSum.call(new Date(), 3, 5)
//第二行打印结果
Sun Nov 08 2020 16:37:59 GMT+0800 (中国标准时间) 8
至于使用apply还是call 完全取决于采取哪种给函数传递参数的方式最方便
bind:
- 特点是改变this指向后不会立即调用函数
color = 'red';
var o = { color: 'blue' }
function showColor() {
console.log(this.color);
}
var newFn = showColor.bind(o);
newFn() // blue