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

Default arguments in functions which defined in object

本文关键字:参数 默认 函数 定义 object      更新时间:2023-09-26

下面是我的代码:

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'

您可以将其作为对象中的函数,从而使代码保持干燥

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

现在在需要模型的块中使用以下代码。

var test_model = this.getModel(model);

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