javascriptでオブジェクトリテラルを定義すると、そのオブジェクトはどこに存在しますか?それはその関数のアクティベーションオブジェクトにありますか?これと他の意味の間に技術的な違いがあるかどうかを知るためにこれを求めています:
var global;
(function(){
global={};
})();
また:
var global = {};
javascriptでオブジェクトリテラルを定義すると、そのオブジェクトはどこに存在しますか?それはその関数のアクティベーションオブジェクトにありますか?これと他の意味の間に技術的な違いがあるかどうかを知るためにこれを求めています:
var global;
(function(){
global={};
})();
また:
var global = {};
どちらのバージョンでも、まったく同じ結果、つまり空のグローバルオブジェクトが得られます。いいえ、技術的な違いはありません。
オブジェクトにはスコープがないため、オブジェクトを作成する場所に違いはありません。
ただし、オブジェクトにメソッドがある場合は、オブジェクトが作成されたスコープのローカル変数を使用できます。
var global;
(function(){
var local = 42;
global = {
aMethod: function() { alert(local); }
};
})();
ローカル変数local
はそのスコープ内にのみ存在しますが、メソッドがスコープ内に作成されるため、オブジェクト内のメソッドは変数を使用できます。
メソッドがスコープ内で作成されている限り、スコープ外で作成されたオブジェクトでも同じことが機能します。
var global = {};
(function(){
var local = 42;
global.aMethod = function() { alert(local); }
})();