js中bind,call,apply方法的應用

最近用js的類寫東西,發現一個無比蛋疼的事,那就是封裝的類方法中的this指針常常會改變指向,失去上下文,致使程序錯誤或崩潰。css

好比:數組

function Obj(){
  this.type = "obj";
}
Obj.prototype = {
  show : function (){
  etTimeout(function (){
    console.log(this.type);
  },300)
}

var obj = new Obj();
obj.show();  //undefined緩存

所幸偉大的js有多種方法能夠解決這個問題。咱們能夠直接保存上下文的指針指向 好比  var self = this; 而後用緩存的 self指針,可是js裏面有 bind,apply,call等比較好用的方法,來指定上下文。app

語法:fn.bind(obj,arguments)函數

   fn.apply(obj,arguments)this

   fn.call(obj,arguments)spa

區別:prototype

  1.bind返回一個方法,而其他兩個都直接調用了函數;指針

  2.第一個參數都同樣,指定上下文對象,第二個參數apply是數組,而call則對應形對象

參照:http://www.css119.com/archives/1376

相關文章
相關標籤/搜索