javascript - jsにおけるこれの問題
我想大声告诉你
我想大声告诉你 2017-06-26 10:57:12
0
3
582

js 初心者の方、問題が発生した場合は、まずコードを書いてください

リーリー

出力結果は未定義です
私の質問は 1. return 内の getName は匿名関数ですか? 私が今理解しているのは、匿名関数、そしてこの です。 this はグローバル世界を指しているはずですよね? window です。では、なぜ john が出力されないのでしょうか。 2. さらに混乱しているのは、デバッグ中に一歩一歩歩いて this.name# に到達したことです。 ## 、 thisObject を指しており、 未定義 が出力されると、そこで監視している this window## になります。 #, this.namejohn になっています。よくわかりません。助けてください。

我想大声告诉你
我想大声告诉你

全員に返信(3)
typecho

この問題は段階的に検討する必要があります。まず、myObject には getName という名前のプロパティがあり、その値はこのメソッドを呼び出しているものです。現時点では未定義です。 alert(myObject.getName()); リーリー

再度拡張して、以下のコードを見てください

リーリー

object.getName() メソッドは匿名関数を返します。これは関数に基づいた実行スコープを指します。このとき、window.name は John です。

lucy を返したい場合は、アロー関数またはクロージャを作成してそれを行う必要があります。
リーリー

アロー関数本体の this オブジェクトは、それが使用されるオブジェクトではなく、定義されているオブジェクトです。

この点の変更のデバッグの問題については、匿名関数の元のスコープは window ですが、実行時に myObject がそれを呼び出すため、その時点で this は myObject を指しているためです。

いいねを押す +0
为情所困

リーリー

getNamethis 指的是 myObject,因为 getName 直接是 myObject 所调用的,所以这里的 this 指的是 ———— 调用函数的那个对象

いいねを押す +0
为情所困

myObject.getName()
通常、関数を呼び出す人は、この関数が指す人を指します

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