イベントに応答してコールバックが実行されるとthis
、関数内で、イベントのターゲットである DOM 要素が設定されます。
最初の例では、匿名関数はthis
ターゲット要素の を取得しますが、それthis
は内部関数呼び出しには転送されません。代わりに、内部関数this
は呼び出された方法に従って で実行されます。(ここでは、直接の「生の」呼び出し (つまり、メンバー関数として呼び出されていない) であるため、非スクリプト モードでthis
equal toで実行されます。)window
2番目の例では、関数update_percentage
とターゲット要素のを直接show_hide_targets
取得します。this
例を考えてみましょう:
function sayThis() { alert(this); }
someElem.addEventListener("click", function() { sayThis() });
someElem.addEventListener("click", sayThis);
someElem.addEventListener("click", function() { sayThis.call(this) });
1 つ目はアラートwindow
(またはundefined
厳密モード) です。2 番目は、リスナーが起動した要素に警告します。3 番目のリスナーは無名関数を使用しますが、.call(this)
元のリスナーを内部関数に転送するを使用して内部関数を呼び出しますthis
。