$ .extend以第二个参数为函数

时间:2018-12-14 13:24:59

标签: javascript jquery datatables extend

我有以下代码:

$.extend($.fn.dataTable.defaults, {
  "height": 500,
});

它工作正常,但是我想将此条件作为少数数据表的条件,所以我考虑将第二个参数作为返回对象的函数,如下所示:

$.extend($.fn.dataTable.defaults, function() {
  // check datatable condtion and reurn
  return new {
    "height": 500,
  }
});

我无法完成这项工作。如何根据数据表ID设置一些默认属性?

谢谢

1 个答案:

答案 0 :(得分:0)

$.extend()需要一个对象。该错误是因为它试图将您提供的函数引用用作对象,这显然不起作用。要解决此问题,请执行函数并提供对参数的响应。为此,请在函数定义后添加()以立即执行。

还要注意,创建对象时不需要new关键字。

var foo = { 
  width: 100,
  height: 100 
}
var output = $.extend(foo, function() {
  return { height: 500 }
}()); // note the () here

console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

但是,应该指出,这是一个非常人为的情况。如果可以在那时定义函数,则可以只创建一个对象,而避免使用丑陋的语法。

或者,如果该调用是对外部定义的函数的调用,则默认情况下将起作用:

var output = $.extend(foo, someExternalFunctionThatReturnsAnObject());