Javascript:使用对象的字段值来确定另一个对象文字的字段名称

时间:2009-12-21 11:03:41

标签: 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

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

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

3 个答案:

答案 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;

希望这有帮助