調べては忘れ、調べては忘れなので書いとく。

// こんなオブジェクトがあったとする。
var Hoge = function() {
    this.message = 'bindできたよん';
};
Hoge.prototype = {
    // このメソッドをコールバックで実行したい。
    alertMessage: function() {
        alert(this.message);
    }
};
var hoge = new Hoge();

// setTimeoutの場合は、こうやればOK。
setTimeout(hoge.alertMessage.bind(hoge), 1000);

ちなみに、オブジェクト内部でやる場合はthisをbindすればOK。
callback(arguments)みたいに引数がある場合も、ちゃんと受け取れる。

※ただし、IE8とか古めのブラウザだとbindが動かないので注意。
 対応が必要な場合は https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind を使う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*