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

Javascript 在{}对象创建中引用其他属性,javascript,object,Javascript,Object,可能重复: 如何执行以下操作: var object = { alpha: 'one', beta: **alpha's value** } 如果不将对象创建分为两部分?您无法使用{}对象创建来完成此操作。您无法使用{}对象创建来完成此操作。您不能,对象文字语法不支持此操作,您必须先创建一个变量,然后将其用于这两个对象,如下所示: var value = 'one'; var object = { alpha: value, beta: value }; 或者…完全

可能重复:

如何执行以下操作:

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

如果不将对象创建分为两部分?

您无法使用
{}
对象创建来完成此操作。

您无法使用
{}
对象创建来完成此操作。

您不能,对象文字语法不支持此操作,您必须先创建一个变量,然后将其用于这两个对象,如下所示:

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

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

不能,对象文字语法不支持这一点,您必须先创建一个变量,然后将其用于这两个变量,如下所示:

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

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

如前所述,您不能。最接近的等效值为:

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

这将使用从匿名函数创建的单例实例。您还可以使用
var
声明私有字段,如前所述,您不能这样做。最接近的等效值为:

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

这将使用从匿名函数创建的单例实例。您还可以使用
var

声明私有字段,这是创建该对象的另一种方法,而不会使作用域中出现任何新变量:

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

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

其中一条语句您不确定如何缩进…

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

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

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

其中一个语句您不确定如何缩进……

Hmm。。那真臭。我试图将枚举类型添加到我的对象中,比如var object={CURVETYPE:{DIRECT:0,ROAD:1},travel:this.CURVETYPE.DIRECT},但我可以看到这会破坏我的良好名称空间……嗯。。那真臭。我试图将枚举类型添加到我的对象中,比如var object={CURVETYPE:{DIRECT:0,ROAD:1},travel:this.CURVETYPE.DIRECT},但我发现这会破坏我的好名称空间。。。。。我得到了“o是未定义的”@BrunoLM-不:当你试图使用它时,再次
o
is
undefined
。。。我得到了“o是未定义的”@BrunoLM-Nope:当你试图使用它时,再次
o
is
undefined