JavaScript では、定義した変数や関数は何らかのオブジェクトのプロパティとして保持されます。
function add(a, b) {
return a + b;
}
print(add(100, 200));
上記の add
関数はグローバルなスコープで定義しており、どのオブジェクトにも属していないように見えますが、実はグローバルオブジェクトのプロパティとして保持されています。
グローバルオブジェクトにアクセスするには、グローバルなスコープで this
を参照します。
ただし、グローバルオブジェクトの this
は省略して記述できるので、通常は、上記の print
関数、add
関数の例のように、あたかもグローバル空間に定義された関数のようにアクセスできます。
冗長に書くのであれば、下記のようにも書けるということです。
this.print(this.add(100, 200));
これは、関数じゃなくて変数の場合も同様です。
var obj = {x:100, y:200};
print(obj.x);
print(this.obj.x); // 同上