使用するスタイルを見ました
var test = function() {
var that = this;
this.show() {
that.***;
}
}
なぜthat
関数で使用するのか疑問に思っていますか?
使用するスタイルを見ました
var test = function() {
var that = this;
this.show() {
that.***;
}
}
なぜthat
関数で使用するのか疑問に思っていますか?
使用の目的は、関数が構築されたコンテキストでthat
キャプチャすることです。this
関数が呼び出されると、this
別のコンテキスト (私が信じている呼び出し元) にあるため、test() が呼び出されたときは、this
期待したものとは異なります (JavaScript を理解していない限り、その場合は期待どおりになります)あるべきですが、あなたが望むものではありません)。
の正しい値をキャプチャしますthis
。JS のthis
セマンティクスは少し... ファンキー、IMO です。
何が「正しい」かは、実際に必要なものによって異なりますが、this
後で評価されます。つまり、this
実行時の の値は、関数定義時の値とは異なる場合があります。定義時にキャプチャすることで、必要なものであることを確認できます。
this
キーワードは、javascript の関数間で永続的ではないためです。それを使用してローカル変数に保存すると、that = this
適用するコンテキストに関係なく、ローカル関数内からアクセスできます。
var test = function() {
console.log(this); // foo
var that = this;
var inner = function() {
console.log(this); // bar
console.log(that); // foo
}
inner.call('bar');
};
test.call('foo');