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

javascript - これに関する問題点の指摘

リーリー

上記のコードの実行結果がウィンドウで表示されるのはなぜですか?

天蓬老师天蓬老师2670日前770

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

  • 滿天的星座

    滿天的星座2017-06-28 09:27:33

    obj.getFoo() 返回一个方程,赋值给了 f 。
    f 通过 f() 被调用,没有明确的调用者,所以 this 就是 window

    「obj」を取得したい場合は、これを行うことができます

    リーリー

    返事
    0
  • 阿神

    阿神2017-06-28 09:27:33

    だって、f()实际运行的地方,thiswindow,由于没有通过call或者bind改变上下文,所以输出的就是windowで。

    次のように置き換えることができます:

    リーリー

    こちらself就是指向window了,所以return self.foo就是return window.foo,也就是'window'

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-28 09:27:33

    実際、最も簡単な理解は、obj.getFoo が f を与え、このメソッドが実行される場所を確認することです。

    リーリー

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-28 09:27:33

    console.log(f()) の

    f() は独立して呼び出されます
    1. 呼び出し元の関数がオブジェクトによって所有されている場合、関数が呼び出されるとき、内部の this はオブジェクトを指します。
    2. 関数が独立して呼び出された場合、関数内の this は未定義を指します。
    お勧めの読書 http://www.jianshu.com/p/d647... お役に立てば幸いです

    返事
    0
  • PHP中文网

    PHP中文网2017-06-28 09:27:33

    関数の実行、関数本体内の this は関数の呼び出し元を指します

    1. 次のコードでは、getFoo 関数の呼び出し元は obj なので、getFoo 関数内の this は obj オブジェクトを指します

    リーリー

    2. getFoo 関数は無名関数を返し、それを変数 f に代入し、関数 f を実行します。このとき、関数 f の呼び出し元はウィンドウです。関数内では f もウィンドウを指します

    リーリー

    返事
    0
  • キャンセル返事