2012-06-14 2 views
1

Я знаю, что могу сделать это в JavaScript:JavaScript константы и объектные литералы

RequestDate: { 
    '0' : 'previous_activity_date', 
    '1': 'next_activity_date' 
    } 

И я могу это сделать:

this.RequestDate = {}; 
this.RequestDate[App.FORWARD] = 'next_activity_date'; 
this.RequestDate[App.BACK] = 'previous_activity_date'; 

Есть ли способ сделать следующие работы:

RequestDate: { 
    App.Back : 'previous_activity_date', 
    App.Forward: 'next_activity_date' 
    }, 

Вышеупомянутые ошибки очевидны, есть ли способ заставить его работать?

ответ

1

Как вы уже заметили, вы можете написать следующее:

RequestDate = {}; 
RequestDate[App.Back] = 'previous_activity_date'; 
RequestDate[App.Forward] = 'next_activity_date'; 

Но Javascript синтаксис не допускает выражение до: нотации JSON.

+1

Как это отличается от OP? – RobG

+0

Ну, это было по-разному к тому времени, когда я написал anwser. Я думаю, что ОП улучшил вопрос ...; =) –

+0

* Движущийся палец, имея приказ ... * что ... вы МОЖЕТЕ изменить его? Черт!! – RobG

2

Короткий ответ: нет. В литературе объекта могут быть только буквенные ключи. Ваше собственное решение является лучшим, если вы хотите использовать константы.

http://bclary.com/2004/11/07/

11.1.5 Объект Инициализатор

Объект инициализатора является выражение, описывающее инициализацию объекта, написанный в форме, напоминающей буквальным. Это список нулей или более пар имен свойств и связанных значений, заключенных в фигурные скобки. Значения не обязательно должны быть литералами; они оцениваются каждый раз, когда оценивается инициализатор объекта.

2

вы можете это сделать.

RequestDate: { 
    [App.Back]: 'previous_activity_date', 
    [App.Forward]: 'next_activity_date' 
    }