对象定义范围

时间:2012-09-17 13:53:35

标签: javascript

在javascript中定义对象文字时,该对象存在于何处?那是在该功能的激活对象中吗?我要求知道这个或任何其他含义之间是否存在任何技术差异:

var global;
(function(){
  global={};

})();

或:

var global = {};

2 个答案:

答案 0 :(得分:1)

两个版本都有完全相同的结果,一个空的全局对象。所以不,没有技术差异。

答案 1 :(得分:1)

对象没有任何范围,因此在创建对象时没有任何区别。

但是,如果对象具有方法,则可以使用创建它们的范围的局部变量:

var global;

(function(){
  var local = 42;
  global = {
    aMethod: function() { alert(local); }
  };
})();

局部变量local仅存在于该范围内,但是对象中的方法可以使用该变量,因为该方法是在范围内创建的。

同样适用于在作用域外创建的对象,只要该方法是在作用域内创建的;

var global = {};

(function(){
  var local = 42;
  global.aMethod = function() { alert(local); }
})();