ホームページ  >  に質問  >  本文

javascript - 入れ子関数でこのオブジェクトが指すオブジェクトはどのように変化しますか?

マウスを移動すると長方形のブロックの長さが長くなり、高さが高くなるという機能のデモを書いたのですが、次のような問題が発生しました。ネスティング
リーリー
パラメータを渡すには that=this を使用する必要があります。そうでない場合、ブラウザは次のエラーを報告します

Uncaught TypeError: 'Window' で 'getComputedStyle' の実行に失敗しました: パラメータ 1 は 'Element' 型ではありません。

最後にコード全体を投稿しました。パラメータを渡すために that=this を使用すると問題が解決する理由を知りたいです。パラメーターが渡されない場合、これは誰を 2 回指すことになりますか?この値のすべての変更を監視して表示できる、Chrome と Firefox の優れたデバッグ方法はありますか?

htmlコード:

リーリー

CSSコード:

リーリー

jsコード:

リーリー
習慣沉默習慣沉默2711日前631

全員に返信(5)返信します

  • 黄舟

    黄舟2017-05-19 10:12:31

    イベントを通じて呼び出される関数の this はイベントをトリガーした要素を指すため、op[0].onmouseover イベントによって呼び出される関数の this は op[0]; を指します

    if (fn) { fn();} は関数を呼び出すウィンドウと同等であるため、changeStyle 関数によって渡されるコールバック関数の this はウィンドウを指します

    コードの実行を追跡したい場合は、ブレークポイントのデバッグを使用して、操作中に各変数の割り当てを確認できます

    返事
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:12:31

    これは、関数の実行時に自動的に生成される内部オブジェクトを表し、関数内でのみ使用できます。
    この関数はさまざまな状況で使用されるため、この値は変化します。ただし、これは関数を呼び出すオブジェクトを参照するという一般原則があります。 Ruan Yifeng によるこの記事を読むことができると思います: http://www.ruanyifeng.com/blo...

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:12:31

    ポインティングの心配は忘れて、(es6) アロー関数を使用してくださいthis

    返事
    0
  • PHP中文网

    PHP中文网2017-05-19 10:12:31

    それに合格しない場合、変更関数が誰のスタイルを変更するか知っていますか?これを直接使用する場合、これはウィンドウを指します。1 階で説明したように、ブレイクするとすぐにブレークポイントがわかります。

    返事
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:12:31

    that=this を使用して this を現在の字句スコープにバインドしない場合、this はグローバル オブジェクト ウィンドウを指します。これが this のデフォルトのバインディングです。

    返事
    0
  • キャンセル返事