グローバルオブジェクトwindow, this
by s_hiroshi
JavaScript
// ブラウザのグローバルオブジェクトはwindow
// thisはwindowを指す
console.log(this === window); // true
// JavaScriptはPHPのようなglobalキーワードを持たない
// トップレベルの変数はグローバルな変数になる
// console.log(global); global is not defined
// エミュレート
var global = this;
console.log(global === window); // true
// 下記はどちらともグローバルオブジェクトwindow,thisのプロパティ
// 両者はほとんど同じだが違いもある
// 1. 変数宣言は巻き上げ処理が行われる(関数式でも)
// 2. var付きはグローバルオブジェクトのプライベート変数で外部からアクセスできない
this.hoge = function(value) {
return value;
};
// varなし変数宣言
foo = function(value) {
return value;
};
// varあり変数宣言 グローバル変数window, thisを通して呼び出すことができない。
var bar = function(value) {
return value;
}
console.log(this.hoge('Hoge')); // Hoge
console.log(window['hoge']('Hoge')); // Hoge
console.log(this.foo('Foo')); // Foo
console.log(window['foo']('Foo')); // Foo
// console.log(this.bar('Bar')); // this.bar is not a function
// console.log(window['bar']()); // window.bar is not a function