// 改变this指向
// call() 用于改变this指向
// 第一次参数表示要改变成的那个this指向,后面的参数表示该函数的参数
// fn() -> fn.call()
// bind() 用于改变this指向
// bind 只会改变this指向,但不会调用函数 -- 返回了这个函数
// apply() 用改变this指向
// apply 的第二个参数必须是一个数组(原函数的参数)
const obj1 = {
name : 'yy' ,
say : function () {
console.log(this.name);
}
}
const obj2 = {
name : 'cc' ,
say : function () {
console.log(this.name);
}
}
obj1.say() // yy
obj2.say() // cc
obj2.say.call(obj1) // y
function fn(n,m) {
console.log(n);
console.log(this);
}
fn(3)
fn.call(document , 4)
// const res = fn.bind(obj2 , 5)
// console.log(res);
// res()
fn.bind(obj2 , 5)()
fn.apply(obj1 , [8 , 7])
function fo(a,b) {
console.log(6);
console.log(a+b);
console.log(this);
}
fo.call(obj1 , 1,2) ;
fo.apply(obj1 , [1,2])
fo.bind(obj1 , 1,2)()