1. ホーム
  2. javascript

[解決済み] JavaScriptにおけるthisとselfの違い

2022-03-05 17:05:02

質問

誰もが知っている this のインスタンスもあります。 self のような、自然界で遭遇する こちら

では thisself をJavaScriptで作成することはできますか?

どのように解決するのですか?

の値は、他の場所で設定されていない限り selfwindow なぜなら ジャバスクリプト を使用すると、任意のプロパティにアクセスすることができます。 xwindow を単純に x の代わりに window.x . したがって self は本当に window.self とは異なります。 this .

window.self === window; // true

グローバルスコープで実行される関数で、ストリクトモードでないものを使っている場合。 this はデフォルトで window であり、したがって

function foo() {
    console.log(
        window.self === window, // is self window?
        window.self === this,   // is self this?
        this === window         // is this window?
    );
}
foo(); // true true true

関数を別の文脈で使用する場合。 this はそのコンテキストを参照しますが self はまだ window .

// invoke foo with context {}
foo.call({}); // true false false

を見つけることができます。 window.self で定義されている W3Cの2006年作業草案で ウィンドウオブジェクト こちら .