2009-12-21 62 views
0

我想用对象的字段的值,而使用的文字符号创建另一个对象:的Javascript:使用对象的字段的值来确定另一个对象文本的字段的名称

var T = { 
fieldName : 'testField' 
}; 
/* 
// Doesn't work. 
var test = { 
T.fieldName : 'value' 
}; 
*/ 
// Does work. 
var test = []; 
test[T.fieldName] = 'value'; 
alert(test.testField);   // test 

但它不工作。
有没有办法解决这个问题或使用方括号是唯一的出路?

更新:删除了非工作代码。

+2

你还没有尝试运行您发布的代码,是吗? – thorn 2009-12-21 11:12:45

+0

糟糕,它似乎为我工作。删除了错误的代码。 – Li0liQ 2009-12-21 11:23:42

回答

2
var T = { 
fieldName : 'testField' 
}; 
var dummy = T.fieldName;  // dummy variable 
var test = { 
dummy : 'value' 
}; 
alert(test.testField);   // test 

这不应该工作。值'value'将存储在test.dummy中,而不是test.testField。做到这一点的方法是:

var T = { 
fieldName : 'testField' 
}; 
// Does work. 
var test = {}; 
test[T.fieldName] = 'value'; 
alert(test.testField);   // alerts "value" 

这是你已经拥有

+0

它似乎为我工作:)。测试并将其作为错误代码从问题中删除。 – Li0liQ 2009-12-21 11:27:14

2

你的“test”变量数组,而不是对象。

您应该创建“测试”,如“= {}”,而不是“= []”。

0

一种可能的方式是。

var T={ 
    testField : 'testField' 
}; 

    eval ('var test = {' + T.testField + ':' + value + '}'); 

您在本通用的,这样的事情

function MakeVar(varName,fieldToUse,valueToPass) 
{ 
     var res = 'var ' +varName+ '= {' + T.testField + ':' + value + '}' 
    eval(res); 
} 

var T={ 
    testField : 'testField' 
}; 


    MakeVar('test',T.testField,'value'); 
    var outt=test.testField; 

希望这有助于

相关问题