14

thisDOM レベル 3 イベント仕様のイベント ハンドラー関数内のキーワードの意味を見つけようとしていました。

私の実験によるthisと、オブジェクトを指しevent.currentTargetます。

この動作は標準のどこかに記載されていますか?

「JavaScript The Definitive Guide」の本によるthisと、event targetどちらが間違っていると思われるかを参照しています。event.currentTargetイベント ハンドラーが HTML 要素オブジェクトのメソッドとして呼び出されるため、より論理的に見えます。

誰かが明確にしてもらえますか?

バブリングの場合、「これ」が変化し、event.currentTarget を意味することがわかります。

4

2 に答える 2

11

要素のイベント ハンドラーでは、デフォルトのキャプチャ (false)thisを使用して、イベントを検出した要素を参照します。どちらでも使用できます。

例えば:

element.addEventListener('keydown', function (event) {
    // `this` will point to `element`
}, false);

イベントをキャプチャする場合 (true)、たとえばウィンドウ レベルでevent.target、 はイベントを発生させた要素をthis参照し、 はキャプチャ要素を参照します。例えば:

window.addEventListener("error", function (event) {
    event.target.src = 'some_path';
    // `this` will point to window
    // `event.target` will point to the element that had an error
}, true);

これがそれぞれの違いを例示していることを願っています。

于 2013-07-15T23:23:21.913 に答える