これは、コールバック内でエスケープthis
の問題を回避するための方法です。この余分な参照がなければ、コードは次のようになります。
$.get(path, function(contents) { // or some other function with callback
//Wrong! `this` might no longer point to your object
this.done(JST[path] = tmpl);
})
残念ながら! this
内部応答コールバックは、this
と同じではありません。実際には、$.get
(コールバックを使用して呼び出す)がそれを決定するものに応じて、何でもかまいません。人々のほとんどは、同じ目的のためにthat
という名前の余分な参照を使用します。
var that = this;
// ...
$.get(path, function(contents) { // or some other function with callback
// ...
that.async(JST[path] = tmpl);
})
このパターンはまた、合理的かつ読みやすいようです。
ああ、あなたは、この構文について興味がある場合:
done(JST[path] = tmpl)
これは式として使わ割り当てです。割り当ての値が右側であるので、このコードは以下と等価である:
JST[path] = tmpl;
done(tmpl);
これは組み込み関数ではありません。いくつかのライブラリ/フレームワークによって提供されなければなりません。 – user123444555621