Использование констант в качестве индексов для ассоциативных массивов Javascript

Я хочу создать ассоциативный массив в 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, но, похоже, что бы я ни делал, массив определяется с помощью строк, а не констант. Есть ли способ заставить массив использовать константы?

Спасибо!

19
задан Edan Maor 7 November 2010 в 09:44
поделиться