ここで働いているコードサンプルは:私はこのコードの代わりに、「ブーム」から.bind(drum)
一部を削除した場合なぜメソッド関数でsetIntervalにバインドする必要がありますか?
function Drum(){
this.noise = 'boom';
this.duration = 1000;
this.goBoom = function(){console.log(this.noise)};
}
var drum = new Drum();
setInterval(drum.goBoom.bind(drum), drum.duration);
私は、コンソールに「未定義」を取得します。 typeof drum.goBoom
は「機能」を返すので、このような動作の理由は何ですか?
あなたの例で実際には定義されていないのは、「ノイズ」です。 'this'はDrumインスタンスを参照しないため(実際には参照するウィンドウインスタンスだと思います) – musefan
yep、Timeoutオブジェクト – Anton