Javascript js使用对象文本替换变量

Javascript js使用对象文本替换变量,javascript,object-literal,Javascript,Object Literal,在我的代码中,我使用对象文本替换多个var语句的时间最长。下面是一个典型的例子: (function(){ var replaceVars = {}; function x(){ replaceVars.num=886; } function y(){ x(); replaceVars.cal = replaceVars.num*99; return replaceVars.cal; } })(); 所以我的问题是:这有什么问题吗?我的意思是,我

在我的代码中,我使用对象文本替换多个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)我可以预先定义准备立即启动的属性:

替换变量={ 一些东西1:“一些价值”, 一些东西2:“一些其他的价值” }


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

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

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

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

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

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

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

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

var replaceVars = {
    num: null,
    cal: null
};
但是,这同样有效:

(function () {
  var num, cal;

  function x(){
    num = 886;
  }

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

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

var replaceVars = {
    num: null,
    cal: null
};
但是,这同样有效:

(function () {
  var num, cal;

  function x(){
    num = 886;
  }

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

你为什么这么做?为了什么?JavaScript中没有多个
var
语句。只要确保它们都出现在它们所使用的函数的顶部就行了。在多年前第一次使用jsLint之后,它抱怨太多变量,我开始这样做,它一直困扰着我。另外,它看起来比一次声明所有变量要整洁得多:变量x,y,z,count chocula@jbabey这只是我组织代码的一种方式,然后我就习惯了。@codewombat接受jslint给你的每一个“错误”。你为什么这样做?为了什么?JavaScript中没有多个
var
语句。只要确保它们都出现在它们所使用的函数的顶部就行了。在多年前第一次使用jsLint之后,它抱怨太多变量,我开始这样做,它一直困扰着我。另外,它看起来比一次声明所有变量要整洁得多:变量x,y,z,count chocula@jbabey这只是我组织代码的一种方式,然后我就习惯了。@codewombat接受jslint给你的每一个“错误”10吨盐。现在已经阅读了原始问题下面的注释,我怀疑我的答案是否是你想要的…;)现在我已经阅读了原始问题下面的评论,我怀疑我的答案是否是您想要的…;)六羟甲基三聚氰胺六甲醚。。。提前声明属性是一种良好的做法,还是对内存/速度有好处?@codewombat这只是为了您自己,提供了有关以下代码的线索。因此,您不必浏览所有代码来确定正在使用哪些属性。。。提前声明属性是一种良好的做法,还是对内存/速度有好处?@codewombat这只是为了您自己,提供了有关以下代码的线索。因此,您不必浏览所有代码来确定正在使用哪些属性。