→
オブジェクトの名前を呼び出す。
値は、非厳格モードでは、実行コンテキスト(グローバル、関数、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="">