変数を作成したり、バインドしたりできます。最善の解決策は何ですか?
var object = {
log: function (s) {
console.log(s);
},
run: function () {
var self = this;
setTimeout(
function () {
self.log('test');
}, 1000
);
}
};
object.run();
また:
var object = {
log: function (s) {
console.log(s);
},
run: function () {
setTimeout(
function () {
this.log('test');
}.bind(this), 1000
);
}
};
object.run();
更新: これを決定する方法はたくさんあります。互換性、パフォーマンス、読みやすさの側面が最も重要です。
Function.prototype.bind 関数は非常に新しいため、使用前に互換性テーブルを確認してください。
パフォーマンスについては、self を使用するのが最適です。関数を複数回呼び出す場合は bind の方が良いかもしれませんが、それはこの質問の範囲外です。
私は読みやすさのために bind が好きです。