最終出力が 123 になるのはなぜですか? object.getNameFunc = object.getNameFunc とはどういう意味ですか?
質問を間違って読んだので、もう一度説明させてください。
まずobject.getNameFuncを見てください、その定義は
object.getNameFunc
このようにobject.getNameFunc = object.getNameFuncと書くと、実際にはこのように見えます。
object.getNameFunc = object.getNameFunc
実は、そんなことをしていると、this 已经不是 object 了。而是 window(在浏览器里)了。所以输出的是外面的 name。
this
object
window
name
おそらくこんな感じ = =
代入演算の結果は左辺値です。
したがって、(object.getNameFunc = object.getNameFunc)()は次のように考えることができます:
(object.getNameFunc = object.getNameFunc)()
つまり this はグローバルを指すので、123 になります
リーリー
これの引用結果から判断すると、これは全体的な状況を指しているに違いありません。理解されていないリンクが途中にあるかもしれません。 最後にコードを追加すると、(obj.getNameFunc = obj.getNameFunc) の内容がわかります。 はい、コンソールに関数があるので、ステートメント (obj.getNameFunc = obj.getNameFunc) がわかります。 getNameFunc) が実行されると、結果は関数になります。慣性的に考えると、これは単なる再代入操作であり、関数を呼び出すのは依然として obj であると考えられます。 実際、ステートメントが実行された後、この関数は実際にグローバル オブジェクトによって呼び出されます。
質問を間違って読んだので、もう一度説明させてください。
まず
です リーリーobject.getNameFunc
を見てください、その定義はこのように
リーリーobject.getNameFunc = object.getNameFunc
と書くと、実際にはこのように見えます。実は、そんなことをしていると、
this
已经不是object
了。而是window
(在浏览器里)了。所以输出的是外面的name
。おそらくこんな感じ = =
代入演算の結果は左辺値です。
したがって、
リーリー(object.getNameFunc = object.getNameFunc)()
は次のように考えることができます:
つまり
this
はグローバルを指すので、123 になりますリーリー
これの引用結果から判断すると、これは全体的な状況を指しているに違いありません。理解されていないリンクが途中にあるかもしれません。
最後にコードを追加すると、(obj.getNameFunc = obj.getNameFunc) の内容がわかります。 はい、コンソールに関数があるので、ステートメント (obj.getNameFunc = obj.getNameFunc) がわかります。 getNameFunc) が実行されると、結果は関数になります。慣性的に考えると、これは単なる再代入操作であり、関数を呼び出すのは依然として obj であると考えられます。
実際、ステートメントが実行された後、この関数は実際にグローバル オブジェクトによって呼び出されます。