call、bind、apply区别及使用
- bind 会改变this指向 并且函数不会立即执行 传参方式以逗号分开
- call 会改变this指向 函数会立即执行 传参方式以逗号分开
- apply 会改变this指向 函数会立即指向 传参方式以数组的形式传入
let fn1 = function (a, b) {
this.name1 = '娃娃'
this.age = '40'
console.log(this, a, b)
}
let obj2 = { names: '麻醉' };
// 把obj2的this指向变成 fn1
fn1.bind(obj2, 2, 3)(); //改变this指向 不会执行
fn1.call(obj2, 2, 3); //改变this指向 会自动执行
fn1.apply(obj2, [2, 3]) //改变this指向 会自动执行 传参方式为数组
返回的结果都是一样 只是传参 和 是否立即执行是否相同