在object中定义的函数中的默认参数

时间:2015-05-31 11:47:41

标签: javascript

这是我的代码:

MyModel =  {
  get: function(key, model) {
    if(typeof(model) === 'undefined') {   // A
      model = Model.get();                // A
    }                                     // A
    return model.data[key];
  },
  getAll: function(model) {
    if(typeof(model) === 'undefined') {
      model = Model.get();
    }
    return model.data;
  },
  save: function(data, model) {
    if(typeof(model) === 'undefined') {
      model = Model.get();
    }
    model.save(data);
  },
  //...
}

A部分重复。

有没有办法让它变得更漂亮?

get: function(key, model = Model.get());

之类的东西

来自MDN,但它在许多浏览器中都无效。

function setBackgroundColor(element, color = 'rosybrown') {
  element.style.backgroundColor = color;
 }

setBackgroundColor(someDiv);            // color set to 'rosybrown'
setBackgroundColor(someDiv, undefined); // color set to 'rosybrown' too
setBackgroundColor(someDiv, 'blue');    // color set to 'blue'

2 个答案:

答案 0 :(得分:3)

你可以在你的对象中使它成为一个函数,从而保持你的代码干燥

getModel: function(model){
   return model || Model.get();
}

现在在需要模型的块中使用以下内容。

var test_model = this.getModel(model);

答案 1 :(得分:0)

默认参数是ECMA 6提案的一部分,仅适用于Firefox 15.0及更高版本。没有其他浏览器支持它。