フォームを自動入力するために使用しているJavascript(dojo)関数があります。アイデアはフォームフィールドIDのキーを持つJSオブジェクトとフィールドの記入方法を定義する値を渡すことです。自動フォームJSコードを合理化/改善/美化するにはどうすればよいですか?
それは動作しますが、私には少し醜いと感じます(switch文、オブジェクト構文内のオブジェクト)。 *このコードをどのように改善できますか?
/**
* Fill in the form with passed in values
*
* @param {Object} defaults
*
* Can be used to pass in default values to the form. Expects an object like this:
* {<field id>: {type: '<field type>', value:'<value>'}
*
* for example:
* {
* paymethod: {type: 'select', value:'Account Transfer'}, // html select
* fundsource: {type: 'combo', value:'Corporation Account'} // dijit.comboBox
* }
*/
function fillDefaults(defaults) {
var props;
for (var field in defaults) {
props = defaults[field];
switch (props['type']) {
// so far only select and combo have been implemented
// others will be added as needed
// and maybe grouped depending on how they work
// (e.g. all dijits together, <input> with <select>, etc.)
case 'select':
dojo.byId(field).value = props['value'];
dojo.byId(field).onchange()
break;
case 'combo':
dijit.byId(field).attr('value', props['value']);
break;
}
}
}
[*]改善:きれいにし、より多くのJSのような、より多くの道場のような、より合理
スイッチにメモリが集中していますか?その声明を正当化できますか? – Josh
昨年、いくつかのテストをA.I. JSで書かれた通訳。パーサには大量の条件チェーンがあり、すべて可読性を高めるためにスイッチで書かれています。テストの後、/ else vs switchが見つかった場合、/ elseはスイッチよりも速く評価されます。しかし、TraceMonkeyとGoogleのV8の私の声明では今や軽量化されているかもしれない。正当化はない、ちょうど経験。私はダグラス・クロフォードの話を聞いて、それについて話していたことは確かです。 –