問題タブ [this-keyword]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
4317 参照

java - Javaの「this」変数は実際に現在のオブジェクトにどのように設定されていますか?

検討:

同様の質問が寄せられていることは知っていますが、Java の「this」変数についてしっかりと理解することはできませんでした。

上の画像の結果をどのように理解するかを説明してみましょう。

  1. メソッドをnew TestChild()呼び出すのはオブジェクトであるため、6 行目の変数はオブジェクトに設定されます - デバッガーによると {TestChild@428}。printName()thisTestChild

  2. ただし、Javaには仮想フィールドがないため、これが何を意味するのか完全にはわかりませんが、ポリモーフィズムをサポートするJavaメソッドの反対であると概念的に理解しています-コンパイル時this.iに100に設定されます。TestParent

  3. したがってthis、メソッドthis.iTestParentは常にクラス内のi変数になります。TestParent

私の理解が正しいかどうか確信が持てないので、間違っている場合は修正してください。

また、私の主な質問は、

thisメソッドを呼び出している現在のオブジェクトに変数がどのように設定されているか? 実際にどのように実装されていますか?