在{}对象创建中引用其他属性

时间:2010-08-02 21:43:43

标签: javascript object

  

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

如何执行以下操作:

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

没有将对象创建分成两部分?

4 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:6)

你不能,对象文字语法只是不支持这个,你必须首先创建一个变量,然后将它用于两者,如下所示:

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

};
}(
 {
    v1: "one",
    v2: "two",
 }
);

其中一个你不确定如何缩进的陈述......