我有这个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' } }
但我很好奇为什么变量在关键时没有改变,如果有办法做到这一点?
答案 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"