代码之家  ›  专栏  ›  技术社区  ›  Li0liQ

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

  •  0
  • Li0liQ  · 技术社区  · 16 年前

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

    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.: 已删除非工作代码。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Marius    16 年前
    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"
    

    这就是你已经拥有的

        2
  •  2
  •   Beresta    16 年前

        3
  •  0
  •   RameshVel    16 年前

    一种可能的方法是。

    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;
    

    希望这有帮助