优化开关代码以调用函数参数
optimize switch code to function args call
我使用下面的代码工作正常。
_handleIn: function(Filecontent, config) {
var oExtendedHTML = Filecontent;
switch (config.action) {
case 'new':
oExtended = this._crElement(Filecontent, config);
break;
case 'upd':
oExtended = this._updlement(oExtended, config);
break;
}
return oExtended;
},
因为我是 JS 的新手,我想了解更多,所以我读到有时可以将 switch 更改为这个伪 coe:
这个
function actions(key, args){
switch(key){
case: 'foo':
return doFoo(args);
break;
case: 'bar':
return doBar(args);
break;
case: 'baz':
return doBaz(args);
break
}
}
var value = actions(keyargs);
// To This
var actions = {
foo: function doFoo(){...},
bar: function doBar(){...},
baz: function doBaz(){...}
};
var value = actions[key](args);.
我的问题是如何更改我的代码?不确定如何传递密钥和参数,我使用的是 requirejs AMD 模块。
// your function without `switch`
var _handleInnerElement = {
_createElement: function(){
alert('create');
},
_updateElement: function(){
alert('update');
},
// you can use strings also
'new': function(fileContent, config) {
return this._createElement(fileContent, config);
},
upd: function(fileContent, config) {
return this._updateElement(fileContent, config);
}
}
// some variables to work with
var config = {
action: 'new',
some_data: 123
}
var someFileContent = {};
// usage
_handleInnerElement[config.action](someFileContent, config);
我使用下面的代码工作正常。
_handleIn: function(Filecontent, config) {
var oExtendedHTML = Filecontent;
switch (config.action) {
case 'new':
oExtended = this._crElement(Filecontent, config);
break;
case 'upd':
oExtended = this._updlement(oExtended, config);
break;
}
return oExtended;
},
因为我是 JS 的新手,我想了解更多,所以我读到有时可以将 switch 更改为这个伪 coe:
这个
function actions(key, args){
switch(key){
case: 'foo':
return doFoo(args);
break;
case: 'bar':
return doBar(args);
break;
case: 'baz':
return doBaz(args);
break
}
}
var value = actions(keyargs);
// To This
var actions = {
foo: function doFoo(){...},
bar: function doBar(){...},
baz: function doBaz(){...}
};
var value = actions[key](args);.
我的问题是如何更改我的代码?不确定如何传递密钥和参数,我使用的是 requirejs AMD 模块。
// your function without `switch`
var _handleInnerElement = {
_createElement: function(){
alert('create');
},
_updateElement: function(){
alert('update');
},
// you can use strings also
'new': function(fileContent, config) {
return this._createElement(fileContent, config);
},
upd: function(fileContent, config) {
return this._updateElement(fileContent, config);
}
}
// some variables to work with
var config = {
action: 'new',
some_data: 123
}
var someFileContent = {};
// usage
_handleInnerElement[config.action](someFileContent, config);