はじめに 一年たった頃に、ようやくふわっとしていたthisについて理解できた時があったので、その気付いたときの記録とthisについて僕なりの言葉で解説したいと思います。 1年目まで勘違いしていた点 言語に関係なく、thisはブロックを抜けた外のスコープを指していると思っていた。 ※今回はPHPのコードを読んでいる際に間違いに気付きました。 結論(正解) PHPの$this クラスインスタンス(自分自身)を指している。 JavaScriptのthis アロー関数の場合 アロー関数は関数定義時(定義場所)の1つ前のコンテキスト(PHPみたいな挙動) 通常のfuctionの場合 関数呼び出し元(関数呼び出し時)がコンテキストになる 具体例(PHPの$this挙動の説明) 当時PHPでエラー原因を探るためデバッグをしていてその過程でPHPでの$thisの本当の意味について気付いたので、見ていく
![エンジニア1年たった頃にようやくPHPとJavaScriptの「this」の挙動の違いを理解できた話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/5ab386c36c49fcafedccb0d7937d0e0ef6f8cb05/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgyJUE4JUUzJTgzJUIzJUUzJTgyJUI4JUUzJTgzJThCJUUzJTgyJUEyMSVFNSVCOSVCNCVFMyU4MSU5RiVFMyU4MSVBMyVFMyU4MSU5RiVFOSVBMCU4MyVFMyU4MSVBQiVFMyU4MiU4OCVFMyU4MSU4NiVFMyU4MiU4NCVFMyU4MSU4RlBIUCVFMyU4MSVBOEphdmFTY3JpcHQlRTMlODElQUUlRTMlODAlOEN0aGlzJUUzJTgwJThEJUUzJTgxJUFFJUU2JThDJTk5JUU1JThCJTk1JUUzJTgxJUFFJUU5JTgxJTk1JUUzJTgxJTg0JUUzJTgyJTkyJUU3JTkwJTg2JUU4JUE3JUEzJUUzJTgxJUE3JUUzJTgxJThEJUUzJTgxJTlGJUU4JUE5JUIxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1kYmM5Mjg4YWI4ZDk3MDQxMDA0NTRlMjU3ZWQzN2QwZQ%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwZGVyYXNhZG8lMjBpbiUyMEJPT00lMjBURUNIJTIwQ0FGRSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTMyJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MTZhZjUzNWE4NGZhYWY0Y2RlODY5ODFjYmIyMzY3ZDE%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Da8c0399a733b54f039a8e6f0058a56e9)