【问题标题】:How can I safely use variables in objects? [duplicate]如何安全地在对象中使用变量? [复制]
【发布时间】:2014-06-28 11:32:50
【问题描述】:

我对我的控制台感到无聊和混乱,我想出了以下代码:

我正在尝试类似:

x = 16;
y = 26;
f = { x+y:"String!"};

期待某事或以某种方式去做:

Object {1626: "String!"}

至少

Object {42: "String!"}

我最终得到了

x = 16;
y = 26;
eval("f = { "+x+y+":\"String!\"}");

按预期返回:

Object {1626: "String!"}

我一直被告知要避免使用eval(),并且出于安全考虑,甚至从不考虑使用它。有没有办法在声明属性时使用变量(对不起,如果我不知道它的确切名称)

【问题讨论】:

  • f = {}; f[x+y] = "String"; f[x.toString() + y.toString()] = "String";
  • 你碰巧知道变量{foo: "bar"}的确切类型,所以我可以在网上查到更多,typeof()只说对象...
  • 那只是一个object...这是它的确切类型。
  • 你在找Bracket Notation
  • @Codingale 是,但Array("foo", "bar") instanceof Array 也将返回 true。 Javascript 中的所有数组都是对象,但并非所有对象都是数组。函数也是对象。

标签: javascript eval


【解决方案1】:
x = 16;
y = 26;
f = {};
f[x+''+y] = "String!"; // For f[1626]

f[x+y] = "String!"     // For f[42]

【讨论】:

    【解决方案2】:

    我在开始学习 JavaScript 时犯了同样的错误:JavaScript set object key by variable

    您首先必须制作对象:

    var f = {};
    

    那么就可以使用变量来动态创建key了:

    var x = 16, y = 26;
    f[x+y] = "Integer"; 
    f[x.toString() + y.toString()] = "String";
    

    【讨论】:

    • 我喜欢你对f[42]f[1626] 的两种表达方式,我不知道如何像你一样表达这个问题,谢谢你的回答!
    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多