1

ここで完全な悪夢を見て、なぜオブジェクトなのかを自分自身に説明するのに苦労していthisますwindow?

(function () {

    function get () {
        alert(this);
    }

    get();

})();

関数がJSでスコープを作成したことは私の理解でしたが、なぜこれがwindowオブジェクトを参照するのですか?

4

2 に答える 2

0

thisJavascriptでの判定ルール

優先順位:

  • 関数はnew、たとえばvar a = new method()、で呼び出されthis、新しい空のオブジェクトになります。
  • call関数は、 、apply、またはを使用して特定のコンテキストで明示的に呼び出され、が使用されたコンテキストになります (たとえば、が発生bindします) 。thismethod.call(y)thisy
  • 関数がオブジェクトによって呼び出され、関数のコンテキストが呼び出し元のオブジェクトになります (例:x.method()が発生thisしますx) 。
  • 非厳密モードでthisは、他のルールが満たされない場合、デフォルトでグローバル オブジェクトになります。厳密モードでthisは、未定義になります。
于 2013-10-11T19:08:01.163 に答える