call, apply, bind // 共同点: 都可以修改this指向 // 区别1: call和apply的参数形式不一样 // 区别2: bind和call, apply,bind在修改this指向的时候不会调用函数,而call和apply会调用函数 代码验证1: // let obj = { // uname: '张三' // } // function fn(age, myheight){ // console.log(this, age, myheight); // } //仅代表调用fn这个函数,并没有修改this指向 // fn.call(); //代表修改this指向,并调用函数 // fn.call(obj, 20); //仅代表调用fn这个函数,并没有修改this指向 // fn.apply(); // 代表修改this指向,并调用函数, // 后面的参数必须是以数组的形式传递 // fn.apply(obj, [20, 180]); 代码验证2: let obj = { uname: '张三' } function fn(age) { console.log(this, age); } //bind不会调用函数 //是有返回值,返回的就是当前这个函数 // let res = fn.bind(); // res(); //修改this指向,传递参数 let res = fn.bind(obj, 20); res();