我想在使用文字符号创建另一个对象时使用对象的字段值:
var T = {
fieldName : 'testField'
};
/*
// Doesn't work.
var test = {
T.fieldName : 'value'
};
*/
// Does work.
var test = [];
test[T.fieldName] = 'value';
alert(test.testField); // test
但它不起作用。
有没有办法解决这个问题或使用方括号是唯一的出路?
更新。:删除了非工作代码。
答案 0 :(得分: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"
你已经拥有的是什么
答案 1 :(得分:2)
您的“test”变量是Array,而不是Object。
您应该创建“test”,例如“= {}”而不是“= []”。
答案 2 :(得分: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;
希望这有帮助