폼을 자동으로 채우는 데 사용하는 Javascript (dojo) 함수가 있습니다. 아이디어는 양식 필드 ID에 대한 키와 필드를 채우는 방법을 정의하는 데 도움이되는 값이있는 JS 객체를 전달하는 것입니다.자동 폼 JS 코드를 간소화/개선/미화하는 방법은 무엇입니까?
작동하지만 스위치 문, 개체 구문 내에서 개체가 나에게 약간 못 생겼다고 느낍니다. 이 코드를 어떻게 향상시킬 수 있습니까?
/**
* 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로 작성된 통역사. 구문 분석기에는 가독성을 높이기 위해 스위치로 작성된 대규모 조건 체인이 있습니다. 테스트를 마친 후/vs 스위치를 찾으면/else가 스위치보다 빠르게 평가됩니다. 그러나 TraceMonkey와 Google의 V8 내 명세서가 이제는 무게가 줄어들 수 있습니다. 칭의는없고, 단지 경험. 더글러스 크로프트 (Douglas Crockford)의 이야기를 듣고 비디오 클립을 보았다고 확신합니다. –