apply&&call&&bind

用來改變函數的this對象的指向
  • 都是用來改變函數的this對象的指向的。
  • 第一個參數都是this要指向的對象
  • 後面的參數是調用方法的參數。
  • 均可以利用後續參數傳參
var xw={
    name: "小王",
    gender: "男",
    age: 24,
    say: function(){
        alert(this.name+" , "+this.gender+" ,今年"+this.age);
    }
}
var xh={
    name: "小紅",
    gender: "女",
    age: 18
}
xw.say();

調用:數組

xw.say.call(xh);
xw.say.apply(xh);
// call和apply都是對函數的直接調用,而bind方法返回的仍然是一個函數
xw.say.bind(xh)();

在有參數的狀況下call和apply產生區別:app

var xw={
    name: "小王",
    gender: "男",
    age: 24,
    say: function(school,grade){
        alert(this.name+" , "+this.gender+" ,今年"+this.age+" ,在"+school+"上"+grade);
    }
}
var xh={
    name: "小紅",
    gender: "女",
    age: 18
}

調用形式:函數

  • call以及bind後面的參數與say方法中是一一對應的
  • apply的第二個參數是一個數組,數組中的元素是和say方法中一一對應的
xw.say.call(xh,"實驗小學","六年級");    
xw.say.apply(xh,["實驗小學","六年級"]);
xw.say.bind(xh,"實驗小學","六年級")();
本站公眾號
   歡迎關注本站公眾號,獲取更多信息