前回の記事では、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();