マスターがこれを導入したときに 2 番目の使用環境を見ました。原文はここです: http://www.ruanyifeng.com/blo...ここのオブジェクトはこれでしょうか?もしそうなら、なぜこれは最も適合性が低いのでしょうか?
出力は次のとおりです:1false
グローバルビューのこれ===ウィンドウ
console.log() がグローバル環境で実行される場合、これはもちろんウィンドウを指します これは関数の現在の実行環境を指します
o.m() は暗黙的にこれを o オブジェクトにバインドしますグローバルスコープでは、これはグローバルオブジェクトを指します
別の呼び出しメソッド func.call(context, x, m) があることを覚えておいてください。上記の 2 つのメソッドは、次のような「変換コード」メソッドを使用できます。 リーリー
と同等です リーリー
しかし、ブラウザにはルールがあります:
したがって、上記の this は window に対応する必要があります。
グローバルビューのこれ===ウィンドウ
console.log() がグローバル環境で実行される場合、これはもちろんウィンドウを指します
これは関数の現在の実行環境を指します
o.m() は暗黙的にこれを o オブジェクトにバインドします
グローバルスコープでは、これはグローバルオブジェクトを指します
別の呼び出しメソッド func.call(context, x, m) があることを覚えておいてください。上記の 2 つのメソッドは、次のような「変換コード」メソッドを使用できます。 リーリー
はと同等です リーリー
論理的に言えば、出力された this は未定義である必要がありますしかし、ブラウザにはルールがあります:
渡したコンテキストが null または未定義の場合、ウィンドウ オブジェクトがデフォルト コンテキストになります (厳密モードのデフォルト コンテキストは未定義です)したがって、上記の this は window に対応する必要があります。