js 初心者の方、問題が発生した場合は、まずコードを書いてください
リーリー出力結果は未定義です
私の質問は 1. return
内の getName
は匿名関数ですか? 私が今理解しているのは、匿名関数、そしてこの です。 this
はグローバル世界を指しているはずですよね? window
です。では、なぜ john
が出力されないのでしょうか。 2. さらに混乱しているのは、デバッグ中に一歩一歩歩いて this.name# に到達したことです。 ## 、
this は
Object を指しており、
未定義 が出力されると、そこで監視している
this は
window## になります。 #, this.name
も john
になっています。よくわかりません。助けてください。
typecho2017-06-26 10:59:12
この問題は段階的に検討する必要があります。まず、myObject には getName という名前のプロパティがあり、その値はこのメソッドを呼び出しているものです。現時点では未定義です。 alert(myObject.getName());
リーリー
リーリー
object.getName() メソッドは匿名関数を返します。これは関数に基づいた実行スコープを指します。このとき、window.name は John です。 lucy を返したい場合は、アロー関数またはクロージャを作成してそれを行う必要があります。
リーリー
この点の変更のデバッグの問題については、匿名関数の元のスコープは window ですが、実行時に myObject がそれを呼び出すため、その時点で this は myObject を指しているためです。
为情所困2017-06-26 10:59:12
リーリー
getName
的 this
指的是 myObject
,因为 getName
直接是 myObject
所调用的,所以这里的 this 指的是 ———— 调用函数的那个对象