Каков эффективный (и удобный для пользователя) способ реализовать следующее в javascript / jQuery?
В зависимости от mime-типа файла должен быть выполнен обратный вызов. Обратный вызов определяется разработчиком путем предоставления описания типа mime с необязательными подстановочными знаками (например, text / javascript, text / *, * / *) и самим обратным вызовом. Должен быть определенный порядок, в котором объявленные типы сопоставляются с данным mime-типом файла. Например, текст / обычный текст должен иметь более высокий приоритет, чем текст /*.
Вот несколько идей:
Использование простого объекта
var handler = {
'text/javascript' : callback0,
'text/*' : callback1
}
Это будет наиболее интуитивным решением, но порядок будет , не гарантируется .
Ведение двух списков
<code>var order = ['text/javascript', 'text/*'];
var handler = [callback0, callback1];
Это будет трудно поддерживать, если существует более двух или трех типов, и вы используете анонимные функции в качестве обратных вызовов.
Добавление индекса путем переноса обратного вызова в объект
<code>var handler = {
'text/javascript' : {index: 0, callback0},
'text/*' : {index: 1, callback1}
};
... изменить тысячи свойств индекса при вставке элемента в начале.
Использование массива массивов
<code>var handler = [
['text/javascript', callback0],
['text/*', callback1]
];
Это может быть более удобным для пользователя, чем другие, но нет прямого доступа для известных типов MIME без итерации по элементам (это было бы хорошо иметь).
Итак, есть несколько способов сделать то, что я хочу, но каков будет правильный способ (и почему)? Может быть, у кого-то есть шаблон?
Лучший,
Hacksteak