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