コアJavaScript第4章第1部(コールバック関数)


コールバック関数


別のコード(ex.map)パラメータに渡す関数
ex)
Array.prototype.map(callback, thisArg)
callback : function(currentValue, index, array)

コールバック関数のthis


コールバック関数に個別のターゲットを指定すると、そのターゲットが参照されます.
(例外:関数が矢印関数の場合、thisは存在しません)

コールバック関数でこの値を指定できない場合、この値を指定する方法(この値を迂回)


ex)
settimeout関数はコールバック関数を受け入れますが、この値は指定されていません.

伝統的な方式.

var obj1 = {
  name:'obj1',
  func : function(){
    var self = this;
    return function(){
      console.log(self.name);
    };
  }
};
var callback = obj1.func();
setTimeout(callback,1000);

bindメソッドの使用

var obj1 = {
  name:'obj1',
  func : function(){
      console.log(obj1.name);
  }
};

var obj3 = {name : 'obj3'};
var callback3 = obj1.func.bind(obj3);
setTimeout(callback3,2000);
call/applyはメソッドの実行時に直ちに有効になるためsettimeout関数と一致しないと考えられる