Home JavaScript JavaScriptで、コールバック関数としてオブジェクトのメソッドを実行する方法
JavaScript

JavaScriptで、コールバック関数としてオブジェクトのメソッドを実行する方法

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

// こんなオブジェクトがあったとする。
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 を使う。

Author

いじょる

フリー開発者。 Webサービス・スマホアプリ・ゲームなど作ってます。 新しいもの好き。 アイデアひねり出す人。 【当ブログ以外の活動】 ・Qiita

コメントを残す

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

*