Я хочу создать ассоциативный массив в JS, но использовать константы, определенные как часть класса, как индексы.
Причина, по которой я хочу это, заключается в том, чтобы пользователи класса могли использовать константы (которые определяют события) для запуска действий.
Некоторый код для иллюстрации:
STATE_NORMAL = 0;
STATE_NEW_TASK_ADDED = 0;
this.curr_state = STATE_NEW_TASK_ADDED;
this.state_machine = {
/* Prototype:
STATE_NAME: {
EVENT_NAME: {
"next_state": new_state_name,
"action": func
}
}
*/
STATE_NEW_TASK_ADDED : { // I'd like this to be a constant
this.EVENT_NEW_TASK_ADDED_AJAX : {
"next_state": STATE_NEW_TASK_ADDED,
"action" : function() {console.log("new task added");},
}
}
}
// Public data members.
// These define the various events that can happen.
this.EVENT_NEW_TASK_ADDED_AJAX = 0;
this.EVENT_NEW_TASK_ADDED_AJAX = 1;
У меня проблемы с тем, чтобы это работало. Я не слишком силен в JS, но, похоже, что бы я ни делал, массив определяется с помощью строк, а не констант. Есть ли способ заставить массив использовать константы?
Спасибо!