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
isundefined
。。。我得到了“o是未定义的”@BrunoLM-Nope:当你试图使用它时,再次o
isundefined
。