js使用对象文字替换var

js using object literals for var replacement

本文关键字:替换 var 文字 对象 js      更新时间:2023-09-26

在最长的一段时间里,我使用对象文字来替换代码中的多个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替换Vars={something1:"一些价值",something2:"其他价值"}

那么,有人能想到我做事方式的缺点吗?

我不认为使用容器对象有任何错误。尽管如此,我还是习惯于声明相关代码所需的变量:

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

但是,话说回来,这也是有效的:

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

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

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;
})();

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