【问题标题】:How to make a variable addressable by name as string in JavaScript?如何在 JavaScript 中通过名称将变量作为字符串进行寻址?
【发布时间】:2009-01-06 18:33:51
【问题描述】:

有没有办法在 javascript 中将变量名转换为字符串?具体来说:

var a = 1, b = 2, c = 'hello';
var array = [a, b, c];

现在,当我遍历数组时,我需要将变量名(而不是它们的值)作为字符串获取 - 这将是“a”或“b”或“c”。我真的需要它是一个字符串,所以它是可写的。我该怎么做?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    使用 Javascript 对象字面量:

    var obj = {
        a: 1,
        b: 2,
        c: 'hello'
    };
    

    然后你可以像这样遍历它:

    for (var key in obj){
        console.log(key, obj[key]);
    }
    

    并像这样访问对象的属性:

    console.log(obj.a, obj.c);
    

    【讨论】:

    • 属性名称周围的引号是可选的 - 为什么不节省一些输入并将它们删除?
    • 实际上,我很高兴他包含了引号,这对我来说更有意义。
    • 有几种方法可以用值填充对象文字 - 选择您最喜欢的一种:obj={a:5}; obj={'a':5}; obj={},obj.a=5; obj={},obj['a']=5;
    • 我最初没有引号 - 检查我的编辑。决定添加它们,因为在某些情况下,您确实需要引号。 JSON 需要引号。这只是一个好习惯。
    • 我通常会做 console.log() 当然,但我不想假设 Firebug。
    【解决方案2】:

    你可以做的是这样的:

    var hash = {};
    hash.a = 1;
    hash.b = 2;
    hash.c = 'hello';
    for(key in hash) {
        // key would be 'a' and hash[key] would be 1, and so on.
    }
    

    【讨论】:

      【解决方案3】:

      摆脱三联画的东西(谢谢)...

      (function(){
          (createSingleton = function(name){  // global
              this[name] = (function(params){
                  for(var i in params){
                      this[i] = params[i];
                      console.log('params[i]: ' + i + ' = ' + params[i]);
                  }
                  return this;
              })({key: 'val', name: 'param'});
          })('singleton');
          console.log(singleton.key);
      })();
      

      只是觉得这是一个不错的小自主模式......希望它有所帮助!谢谢三联画!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-25
        • 2017-01-02
        相关资源
        最近更新 更多