this

1216 ワード

ほとんどの場合、thisの値は関数を呼び出す方法によって決まります.実行時に割当てに設定することはできません.関数を呼び出すたびに異なります.デフォルトの緩和モード(非厳密モード)に基づいて説明します.

グローバルコンテキスト


グローバル実行コンテキストでは、厳格なモードにあるかどうかにかかわらず、グローバルオブジェクトが参照されます.(Webブラウザでは、ウィンドウオブジェクトはグローバルオブジェクト)

厳格なパターンとは?


JavaScriptの有限バージョンを選択して、デフォルトのデフォルトのデフォルトの緩和モードを無効にします.

差異

  • 投げる前に無視されたエラー
  • JavaScriptエンジンの最適化が困難になったエラーを修正します.
  • ECMAScriptの次のバージョンで構文を定義することはできません.
  • 関数コンテキスト


    関数の内部では、thisの値は関数を呼び出す方法に依存します.
  • 単純コール(何も書かれていませんthis)

  • =>windowオブジェクトリファレンス
  • 厳格
    => undefined
  • bindメソッド
    ECMAScriptはbind()を導入した.
    この機能を変更するための組み込み方法
    f.bind(someObject)を呼び出すと、fと同じ本文と範囲を持つ新しい関数が生成されますが、元の関数があります.新しい関数のthisはbind()の最初のパラメータとして永続的に固定され、呼び出し方法には関係ありません.
  • let funcUser=func.bind(user);// func의 this를 user로 바인딩함
  • 矢印関数
  • 矢印関数では、これは自分を囲む静的範囲です.グローバル・コードにグローバル・オブジェクトを含める
  • オブジェクトのメソッド
  • 関数をオブジェクトとして呼び出すメソッドの場合、この値はそのオブジェクト/
  • 行のイベントハンドラで
    ラインイベントハンドラとしてコードを使用する場合、このコードはプロセッサを配置するDOM要素
  • に設定される.
    リファレンス