JavaScript - このコードをどう理解すればよいでしょうか?
扔个三星炸死你
扔个三星炸死你 2017-06-26 10:55:12
0
3
588
リーリー

最終出力が 123 になるのはなぜですか? object.getNameFunc = object.getNameFunc とはどういう意味ですか?

扔个三星炸死你
扔个三星炸死你

全員に返信(3)
为情所困

質問を間違って読んだので、もう一度説明させてください。

まずobject.getNameFuncを見てください、その定義は

です リーリー

このようにobject.getNameFunc = object.getNameFuncと書くと、実際にはこのように見えます。

リーリー

実は、そんなことをしていると、this 已经不是 object 了。而是 window(在浏览器里)了。所以输出的是外面的 name

おそらくこんな感じ = =

いいねを押す +0
phpcn_u1582

代入演算の結果は左辺値です。

したがって、
(object.getNameFunc = object.getNameFunc)()
は次のように考えることができます:

リーリー

つまり this はグローバルを指すので、123 になります

いいねを押す +0
Peter_Zhu

リーリー

これの引用結果から判断すると、これは全体的な状況を指しているに違いありません。理解されていないリンクが途中にあるかもしれません。
最後にコードを追加すると、(obj.getNameFunc = obj.getNameFunc) の内容がわかります。 はい、コンソールに関数があるので、ステートメント (obj.getNameFunc = obj.getNameFunc) がわかります。 getNameFunc) が実行されると、結果は関数になります。慣性的に考えると、これは単なる再代入操作であり、関数を呼び出すのは依然として obj であると考えられます。
実際、ステートメントが実行された後、この関数は実際にグローバル オブジェクトによって呼び出されます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート