検索

ホームページ  >  に質問  >  本文

javascript - jsにおけるこれの問題

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

リーリー

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

我想大声告诉你我想大声告诉你2730日前583

全員に返信(3)返信します

  • typecho

    typecho2017-06-26 10:59:12

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

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

    リーリー

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

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

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

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

    返事
    0
  • 为情所困

    为情所困2017-06-26 10:59:12

    リーリー

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

    返事
    0
  • 为情所困

    为情所困2017-06-26 10:59:12

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

    返事
    0
  • キャンセル返事