Javascript:setTimeoutの中のfunctionのthis(part2)

前回の記事では、setTimeoutの中のthisについての対策を書いたが、アロー関数を使えない場合もあるのでそれも書いておく。

方法1:thisをコピーしておく

var mountains = {
  names: ['fuji', 'tsurugi', 'ontake'],
  print: function() {
    var _this = this;
    setTimeout( function () {
      console.log(_this.names);
    }, 1000);
  }
}

mountains.print();

方法2:bindを使う

var mountains = {
  names: ['fuji', 'tsurugi', 'ontake'],
  print: function() {
    setTimeout( function () {
      console.log(this.names);
    }.bind(this), 1000);
  }
}

mountains.print();