Javascript:使用对象';s字段';s值来确定另一个对象文字';s字段';姓名

Javascript:使用对象';s字段';s值来确定另一个对象文字';s字段';姓名,javascript,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 但它不起作用。 有没有办法解决这个问题,或者使用

我想在使用文字符号创建另一个对象时使用对象的字段值:

var T = {
 fieldName : 'testField'
};
/*
// Doesn't work.
var test = {
 T.fieldName : 'value'
};
*/
// Does work.
var test = [];
test[T.fieldName] = 'value';
alert(test.testField);          // test
但它不起作用。
有没有办法解决这个问题,或者使用方括号是唯一的出路

Upd.:已删除非工作代码

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"
这就是你已经拥有的

这不应该奏效。值“value”将存储在test.dummy中,而不是test.testField中。这样做的方法是:

var T = {
 fieldName : 'testField'
};
// Does work.
var test = {};
test[T.fieldName] = 'value';
alert(test.testField);          // alerts "value"
这就是您已经拥有的

您的“测试”变量是数组,而不是对象

您应该创建像“={}”这样的“测试”,而不是“=[]”

您的“测试”变量是数组,而不是对象

您应该创建像“={}”这样的“测试”,而不是“=[]”

一种可能的方法是

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;
希望这有帮助,一个可能的方法是

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;

希望这有帮助

你没有试着运行你发布的代码,是吗?哎呀,它似乎对我有用。删除了错误的代码。你没有试着运行你发布的代码,是吗?哎呀,它似乎对我有用。删除了错误的代码。它似乎对我有用:)。测试并将其作为错误代码从问题中删除。它似乎对我有用:)。测试并将其作为错误代码从问题中删除。