【问题标题】:Referencing other properties in {} object creation [duplicate]在 {} 对象创建中引用其他属性 [重复]
【发布时间】:2010-08-02 21:43:43
【问题描述】:

可能重复:
Self-references in object literal declarations

如何执行以下操作:

var object = {
    alpha: 'one',
    beta: **alpha's value**
}

不将对象创建分成两部分?

【问题讨论】:

  • 嗯.. 好臭。我试图将枚举类型添加到我的对象中,例如 var object = { CURVETYPE: {DIRECT: 0, ROAD: 1}, travel: this.CURVETYPE.DIRECT },但我现在可以看到这会毁掉我漂亮的命名空间。 ..

标签: javascript object


【解决方案1】:

如前所述,您不能。最接近的等价物是:

var object = new (function()
{
    this.alpha = 'one';
    this.beta = this.alpha;
})();

这使用从匿名函数创建的单例实例。您也可以使用var 声明私有字段。

【讨论】:

    【解决方案2】:

    你不能,对象字面量语法不支持这个,你必须先创建一个变量,然后将它用于两者,像这样:

    var value = 'one';
    var object = {
      alpha: value,
      beta: value
    };
    

    或者...完全不同的东西,但是在执行 beta 时不能引用 alpha,因为这两个属性都还没有创建,直到对象语句作为一个整体运行时才可以访问。

    【讨论】:

    【解决方案3】:

    {} 对象创建无法做到这一点。

    【讨论】:

      【解决方案4】:

      另一种创建该对象的方法的想法,而不用任何新变量使范围混乱:

      var lit = function(shared) {
      return {
          alpha: shared.v1,
          beta: shared.v2,
          gamma: "three", 
          delta: shared.v1
      
      };
      }(
       {
          v1: "one",
          v2: "two",
       }
      );
      

      其中一个语句你不确定如何缩进......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-24
        • 1970-01-01
        • 2019-12-07
        • 2019-08-03
        • 2021-11-23
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        相关资源
        最近更新 更多