我使用文字符号创建对象。是否有可能让一些属性使用先前定义的属性作为它们的值?Javascript对象文字符号,使用函数
例如:
var test = {
prop1: obj1,
prop2: obj2,
prop3: (prop1!=null)?prop1:prop2
};
我使用文字符号创建对象。是否有可能让一些属性使用先前定义的属性作为它们的值?Javascript对象文字符号,使用函数
例如:
var test = {
prop1: obj1,
prop2: obj2,
prop3: (prop1!=null)?prop1:prop2
};
如果你正在尝试做一些像var x = { 'a': 1, 'b': x.a }
那么它将无法工作。由于x
尚未完成定义。
但你可以这样做
var
a = 12,
b = 24,
c = a + b; // 36
这是因为每个变种定义顺序解释。基本上相当于
var a = 12;
var b = 24;
var c = a + b;
但是对于对象和数组,整个定义被解释一次。
是的,这就是我一直在寻找的。 – HashTagDevDude 2012-02-28 20:41:05
不,是的。
以下是不可能的:
var o = {
a : 42,
b : o.a //raises a TypeError, o is not defined
};
var o = {
a : b : 42 //raises a SyntaxError, unexpected :
};
下,却是:
//referencing a pre-existing variable is obviously possible
var ans = 42;
var o = {
a : ans,
b : ans
};
var o = {
a : 42
};
//after the variable has been declared, you can access it as usual
o.b = o.a;
如果你觉得用值是一个语句的限制,可以随时使用匿名功能:
var o = {
a : (function() {
doStuff();
return otherStuff();
}())
};
,让您的例子:
var test = {
prop1: obj1,
prop2: obj2,
prop3: (function() {
return (test.prop1!=null)?test.prop1:test.prop2;
})()
};
请问您能更具体些吗?从你的例子来看,我真的不知道问题的本质是什么,因为你应该能够相当容易地测试它。你有没有更详细的例子让你展示? – thescientist 2012-02-28 20:35:13
http://jsfiddle.net/jDzSC/ – xandercoded 2012-02-28 20:37:27