可能重复:
Self-references in object literal declarations引用在{}对象创建其他属性
如何做到以下几点:
var object = {
alpha: 'one',
beta: **alpha's value**
}
不分割的对象创建成两部分?
可能重复:
Self-references in object literal declarations引用在{}对象创建其他属性
如何做到以下几点:
var object = {
alpha: 'one',
beta: **alpha's value**
}
不分割的对象创建成两部分?
你不能,对象文字语法只是不支持这一点,你必须创建一个变量,第一然后用其来进行,就像这样:
var value = 'one';
var object = {
alpha: value,
beta: value
};
或者......完全的东西不同,但在做beta
时不能引用alpha
,因为这两个属性都尚未创建,直到对象语句作为整体运行才可访问。
..我得到“o未定义” – Nick 2010-08-02 21:54:16
@BrunoLM - Nope:http://jsfiddle.net/nick_craver/Gnbjq/当你尝试使用它时,'o'是'undefined'。 – 2010-08-02 21:56:06
您无法通过{}
创建对象。
你不能,如上所述。最相近的是:
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对象= {CURVETYPE:{DIRECT:0,ROAD:1},travel:this.CURVETYPE.DIRECT},但我可以看到这将毁掉我现在很好的命名空间。 .. – Nick 2010-08-02 21:53:14