我一直在尝试创建一个动态命名的JSON属性,但我一直在努力解决错误。老实说,我不知道这是否可以用Javascript实现。无论如何这是我的问题。
假设我正在创建一个JSON对象,如下面的代码:
var DTO = { 'NewObject' : GetFormData() };
var DTO = { 'UpdateObject' : GetFormData() };
var DTO = { 'DelObject' : GetFormData() };
现在我一直在尝试动态命名JSON属性,因为'New' + ClassName
(ClassName
是一个带字符串值的var),但它给了我一个语法错误。有没有办法做到这一点:
var DTO = { 'New' + ClassName : GetFormData() };
var DTO = { 'Update' + ClassName : GetFormData() };
var DTO = { 'Delete' + ClassName : GetFormData() };
我非常感谢你的帮助。谢谢。
答案 0 :(得分:33)
这会满足您的需求吗?
var DTO = {}; DTO['New' + ClassName] = GetFormData();
答案 1 :(得分:9)
这只是“一个对象”。 JSON是字符串的序列化,而不是对象类型。
如果要将变量用作属性名称,则必须先创建对象,然后使用square bracket notation分配数据。
var foo = {};
var bar = 'baz';
foo[bar] = '123';
alert(foo.baz);
答案 2 :(得分:4)
使用ECMAScript 6,您可以在对象属性定义中使用计算属性名称。
例如,您可以简单地写:
var DTO = { ['New' + ClassName] : GetFormData() };
答案 3 :(得分:3)
var DTO = Object();
DTO['New' + ClassName] = GetFormData();