改变this指向

call()

apply()

bind()

call和apply都能函数调用(立即调用),参数1都是要改变this的方向,参数二都是调用函数时需要传递的实参,只是apply需要以数组的方式传参

bind没有调用函数的功能,但会返回一个新函数,参数1,2和call相同

  1. for(var i=0;i<btns.length;i++){
  2. btns[i].onclick=function(){
  3. // 点击事件函数内部的this指的是当前点击的button
  4. setTimeout(function(){
  5. // this.style.color=red;
  6. // 原本定时器内部this指向window
  7. this.style.color='red';
  8. }.bind(this),2000)
  9. // this.style.color='red';
  10. }
  11. }
  12. console.log(p2.getAge.apply(p1,[2021]));
  13. console.log(p2.getAge.call(p1,2021));