改变this指向

发布时间 2023-06-12 17:17:30作者: 有只小菜猫

 (1)函数.call(对象, 实参, 实参...)

(2)函数.apply(对象, [实参, 实参, ...])

 (3)bind

 

// 三者都是用于改变this指向
var obj1 = {
a: 1
}
var obj2 = {
a: 2,
fn: function (c) {
console.log(this.a, c)
}
}
// obj2.fn(5)
// 通过call改变this指向,会触发该函数,把剩余参数直接往后放
obj2.fn.call(obj1, 5)
// 通过apply改变this指向,会出发该函数,把剩余参数放数组
obj2.fn.apply(obj1, [5])
// 通过bind改变this指向,不会触发该函数,返回的是一个新的函数,需要再去调用
obj2.fn.bind(obj1)(5)