优化开关代码以调用函数参数

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);