→
オブジェクトの名前を呼び出す。
値は、非厳格モードでは、実行コンテキスト(グローバル、関数、eval)のプロパティで、常にオブジェクトへの参照です。厳格モードではどのような値でも取り得ます。
グローバル実行コンテキスト(すべての関数の外側)では、厳格モードであるかどうかにかかわらず、this はグローバル オブジェクトを参照します:
// ウェブ ブラウザーでは window オブジェクトもグローバル オブジェクトです。 D=this === window; //=true
a=37; D=window.a; //=37
this.b="MDN"; D=window.b; //="MDN" D=b; //="MDN"
メモ: コードが実行されている現在のコンテキストに関係なく、グローバルの globalThis プロパティを使用していつでも簡単にグローバル オブジェクトを取得できます。
関数内での this の値は、関数の呼び出され方によって異なります。
下記のコードは厳格モードではないため、また呼び出し時に this の値が設定されないため、this は既定でグローバル オブジェクトとなり、これはブラウザーでは window です:
function f1() { return this; } // ブラウザー上で D=f1() === window; //=true // Node 上で D=f1() === global; //=true
ただし厳格モードでは、実行コンテキストに入るときに this 値が設定されていないと、以下の例のように undefined のままになります:
function f2() { 'use strict'; // 厳格モードにする return this; } D=f2() === undefined; //=true
HTML:
<SCRIPT><!-- function Name(n){ alert("入力された名前は"+n+"はです") } //--></SCRIPT> <INPUT type=text name="名前" onblur="Name(this.value)" value="">