我想知道是否可以在json数组中使用分配的变量作为标识符.当我尝试这个,我得到了一些意想不到的结果:
(代码简化,参数以不同的方式传递)
var parameter = 'animal'; var value = 'pony'; Util.urlAppendParameters (url,{parameter : value}); Util.urlAppendParameters = function(url,parameters) { for (var x in parameters) { alert(x); } }
现在,警报弹出窗口说:’parameter’而不是’animal’.我知道我可以使用不同的方法(创建一个数组并在新行上分配每个参数),但是我想保持我的代码紧凑.
所以我的问题是:是否可以在json数组中使用一个变量作为标识符,如果可以,请告诉我怎么样?
提前致谢!
解决方法
不,您不能使用变量作为对象字面值中的标识符.解析器期待一个名称,所以你不能做很多其他,但提供一个字符串.同样,你不能这样做:
var parameter = 'animal'; var parameter = 'value'; //<- Parser expects a name,nothing more,so original parameter will not be used as name
唯一的办法是,如果你真的想在一行中使用一个对象文字就是使用eval:
Util.urlAppendParameters (url,eval("({" + parameter + " : value})");