2009-07-13 2 views
1

Я занимаюсь написанием небольшой библиотеки javascript, чтобы упростить создание/проверку формы. Это в основном повод поправиться с javascript. Я обсуждаю, как использовать пользовательский ввод для создания элемента формы.hash vs specific parameters

Я рассматриваю два подхода. Один из них - взять несколько заранее определенных параметров, таких как id, label, значение

Другое - это взять один объект, который будет использоваться для записи свойств прямо в элемент формы. Например, если бы я хотел передать идентификатор и значение id, я бы просто перешел в {id: 'my_id', label: 'my_label', значение: 'my_value}

Третий вариант - использовать идентификатор, label, options, где options - это объект, который выполняет то, что я описал выше.

Прямо сейчас, проходящий объект, кажется, наиболее гибким, но мне интересно, есть ли серьезные минусы этого? Я бы хотел, чтобы это было легко использовать для большинства пользователей javascript. Любые мысли о том, как это сделать?

ответ

1

Обычный способ обработки с помощью объекта параметров, как в вашем втором варианте. Большинство плагинов (и jQuery-методов), которые требуют опций, используют этот шаблон. Насколько мне известно, в этом нет недостатков, и, поскольку это очень распространенный способ обработки параметров, я не вижу, чтобы его трудно было использовать для других.

Вариант 3, также является приемлемым, если у вас есть что-то, что абсолютно необходимо передать, например. Я бы. Именно в этом случае объект опций чаще всего встречается как последний параметр функции.

Надеется, что это помогает

0

Вы можете поддерживать оба с немного повозки, запряженные волов. Вы можете просмотреть все arguments passed to the function:

Вы можете использовать условие, как:

var func = function(){ 
    if(arguments[0].id) { 
     id = arguments[0].id; 
    } else { 
     id = arguments[0]; 
    } 

    // .. and so on ... 
} 

Это в основном говорит, что если первый аргумент является объектом, извлечь идентификатор, иначе использовать аргумент непосредственно.

Я предпочитаю объект, он может использоваться внешними источниками данных JSON.

1

Использование объектов, по-видимому, является «стандартным» способом сделать это в JS-коде, который я изучил.

Использование списка конкретных параметров, который добавляет требование к заказу, быстро выходит из-под контроля, когда у вас есть несколько параметров.

Если у вас есть «зависимые» параметры, например, те, которые появляются только для определенных значений другого параметра, то это особенно уродливо при использовании простого списка параметров.

Будьте осторожны при повторении свойств объекта. Легко получить унаследованные элементы, которые не предназначены. Douglas Crockford recommends используя hasOwnProperty(), чтобы проверить этот случай.