js使用对象文字进行var替换

时间:2012-03-22 19:01:57

标签: javascript object-literal

现在我已经使用了对象文字替换代码中的多个var语句。这是一个典型的例子:

(function(){
  var replaceVars = {};
  function x(){
    replaceVars.num=886;
}
  function y(){
    x();
    replaceVars.cal = replaceVars.num*99;
    return replaceVars.cal;
  }
})();

所以我的问题是:这有什么不对吗?我的意思是我能看到的最重要的一面是:1)我的整个代码中只有一个var语句。 2)在闭包内所有子进程都可以访问它(这意味着replaceVars属性在闭包范围内变为全局。就像在真正的全局对象(窗口)中创建一个类似全局的子对象(闭包)3)我可以预先定义准备好的属性:

  

var replaceVars = {           something1:“有些价值”,           something2:“其他一些价值”       }

所以有人会想到我的做事方式有任何缺点吗?

2 个答案:

答案 0 :(得分:1)

我认为使用容器对象时没有错误。虽然,我习惯于声明相关代码所需的变量:

var replaceVars = {
    num: null,
    cal: null
};

但是,再次,这也有效:

(function () {
  var num, cal;

  function x(){
    num = 886;
  }

  function y(){
    x();
    cal = num * 99;
    return cal;
  }
})();  

答案 1 :(得分:0)

我不确定你要做什么,但是如果你只想隐藏另一个对象中的对象,例如,只能通过方法访问它们,我会这样做:

var objects = (function() {
  var x = 42;
  var y = 12;

  var container = {};
  container.getX = function getX() {
    return x;
  }
  container.getY = function getY() {
    return y;
  }
  container.getSum = function getSum() {
    return x + y;
  }

  return container;
})();

在我看来,这更容易阅读。