无法用默认值替换为 jquery.extends

unable to replace with jquery.extends with default values

我正在尝试对对象应用、绑定和调用方法。下面我无法用 public 数据替换 layout 说如果我没有从我正在调用的对象传入。

var data = [{
      "option": "com_social",
      "userId": localStorage.getItem("ckuser"),
      "layout": "getSample",
      "view": "conversations",
      "format": "json",
      "limit": 1
    }];
var Data = 'default';
function ajaxCall(opt){
    var opt = jQuery.extend({}, data, opt);
    var layout = opt[0]['layout'];
    this.Data = layout;

}

/***global variable & functions end***/

var list = {
           data : [{
              "option": "com_social",
              "userId": localStorage.getItem("ckuser"),
              "layout": "getConversations",
              "view": "conversations",
              "format": "json",
              "limit": 2
            }]
        }

ajaxCall.call (list, list.data);
console.log(list.Data);

如果我不为对象 list 传入 "layout": "getConversations",,它会说未定义。我知道我要求使用列表对象中的数据。但是现在,如果列表对象未传入 属性,我希望能够使用 jQuery.extend 替换为默认数据。

jQuery.extend 类似于 Object.assign 将扩展一个对象,而不是数组。

在下面的代码中:

var opt = jQuery.extend({}, data, opt); data 是一个没有键的数组。所以,它没有像您预期的那样工作..

试试这个:

var opt = jQuery.extend({}, data[0], opt[0]); 而不是 var opt = jQuery.extend({}, data, opt);