如何将变量用于键名?

时间:2013-12-14 01:38:49

标签: jquery json post key

我有这个jQuery:

$.post(document.URL, {'blanks':word});  
$.post(document.URL, {'blanks':{ word :{'time':T}}});

这是我在终端登录时的结果:

{ blanks: 'plotted' }
{ blanks: { word: { time: '1386984059685' } } }

为什么变量word在第二个jQuery语句中没有改变?我认为这与将单引号添加到键名称有关,但我无法找到解决方法。

我用

解决了我的问题
$.post(document.URL, {'blanks':{'word':word, 'time':T}});

导致

{ blanks: { word: 'plotted', time: '1386984409890' } }

但我很好奇为什么变量在关键时没有改变,如果有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您提前定义数据,则可以执行以下操作:

var someVar = 'foo';
var data = {};

data[someVar] = 'My key is "foo"';

console.log(data.foo);
console.log(data[someVar]);
console.log(data['foo']);

所有这些都会记录My key is "foo"

当您创建这样的对象时{prop: 'value'}属性名称不能是变量 - 您键入的内容就是您所获得的内容。引号是可选的,除非您使用否则会引发错误的字符。使用点符号访问属性也是如此:myObj.propName.anotherPropName

括号表示法更灵活,因为您可以访问其他无效的属性名称,还可以使用变量来设置和访问属性。

var myObj = {
  '@##%$#%%^&%' : 'some value'
};
console.log(myObj['@##%$#%%^&%']); //logs "some value"