需求 : 改变this指向
- call()
语法结构 : 函数名.call(this的新指向, 参数1, 参数2, …)
var obj = {
name: "lisi",
age: 23
};
function sum(n1, n2) {
console.log(n1 + n2);
console.log(this); // 我不让this指向window, 要让this指向obj
}
// sum(15, 5)
sum.call(obj, 14, 3)
- apply()
语法结构 : 函数名.apply(this的新指向, 参数数组或者伪数组) // 注意 : apply方法只有两个参数
sum.apply(obj, [16, 8]);
- bind()
语法结构 : 函数名.bind(this的新指向, 参数1, 参数2, …)
特点 : 不会指向这个要修改this指向的函数的函数, 而是返回已经修改了this指向的函数
bind不传参, 那么就在调用修改了this指向后的函数时传参, 但是如果两个都传了, 那么接受bind的参数