Javascript を使い始めたとき、外部イベント ハンドラー (タイマーなど) にオブジェクト内の関数への参照を渡すときに、オブジェクトthis.
への参照に依存できないという難しい方法を学びました。代わりに、イベントを発生させたもののスコープを参照してください(タイマーの場合、それはwindow
? だと思います)。
私が使用されている回避策は、自分自身へのプライベート/ローカル参照を作成し、それをコールバック ロジック内で使用することです。例えば:
function MyObject() {
var myThis = this;
this.foo = true;
this.callback = function() { return myThis.foo; }
this.interval = 30;
setInterval(function () { myThis.callback(); }, myThis.interval);
}
これは、このような状況での標準的なコーディング プラクティスですか? そうでない場合、推奨される代替手段とその理由は何ですか (たとえば、上記の例のリスクは何ですか)?