2010-02-23 5 views
11

Я пытаюсь создать свойство JSON с динамическим именем, но я продолжаю сталкиваться с ошибками. Честно говоря, я не знаю, можно ли достичь этого с помощью Javascript. Во всяком случае, вот моя проблема.Динамически называют свойство JSON

Давайте предположим, что я создаю объект 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() }; 

Я очень ценю вашу помощь. Благодарю.

ответ

25

ли это удовлетворить ваши потребности?

var DTO = {}; DTO['New' + ClassName] = GetFormData(); 
+0

Спасибо за ответ. –

+0

Добро пожаловать. –

+0

:) Было так много ... Спасибо – Ahsan

9

Это просто «объект». JSON - это сериализация строки, а не типа объекта.

Если вы хотите использовать переменную как имя свойства, сначала необходимо создать объект, а затем назначить данные с помощью square bracket notation.

var foo = {}; 
var bar = 'baz'; 
foo[bar] = '123'; 
alert(foo.baz); 
+0

Спасибо за ответ. –

3
var DTO = Object(); 
DTO['New' + ClassName] = GetFormData(); 
+0

Спасибо за ответ –

2

С помощью ECMAScript 6 вы можете использовать вычисленные имена свойств в определениях свойств объекта.

Например, вы можете просто написать:

var DTO = { ['New' + ClassName] : GetFormData() }; 

Больше информации: http://es6-features.org/#ComputedPropertyNames

Смежные вопросы