如何在 JavaScript 中使变量可按名称作为字符串寻址?

IT技术 javascript
2021-01-24 17:30:54

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

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

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

3个回答

使用 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);
我最初没有引号 - 检查我的编辑。决定添加它们是因为在某些情况下,您确实需要引号。JSON 需要引号。捡起来只是一个好习惯。
2021-03-17 17:30:54
有几种方法可以用值填充对象字面量 - 选择你最喜欢的一种: obj={a:5}; obj={'a':5}; obj={},obj.a=5; obj={},obj['a']=5;
2021-03-24 17:30:54
属性名称周围的引号是可选的 - 为什么不节省一些输入并删除它们?
2021-03-26 17:30:54
实际上,我很高兴他包含了引号,这一切对我来说更有意义。
2021-03-31 17:30:54
我通常会做 console.log() 当然,但我不想假设 Firebug。
2021-04-04 17:30:54

你可以做的是:

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.
}

离开三联画的东西(谢谢)...

(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);
})();

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