如何执行以下操作:
var object = {
alpha: 'one',
beta: **alpha's value**
}
没有将对象创建分成两部分?
答案 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",
}
);
其中一个你不确定如何缩进的陈述......