优化开关代码以实现args调用

时间:2016-04-10 06:40:24

标签: javascript javascript-objects

我使用以下正常工作的代码。

  _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的新手并且我想了解更多,我读到这个开关有时可以改为这个伪系数:

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

我的问题是如何将代码更改为此?不知道如何传递密钥和args,我使用requirejs AMD模块。

1 个答案:

答案 0 :(得分:0)



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