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 を使う。
フリー開発者。
Webサービス・スマホアプリ・ゲームなど作ってます。
新しいもの好き。
アイデアひねり出す人。
【当ブログ以外の活動】
・Qiita
・Follow @Ijoru