$ .extend со вторым параметром как функцией - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть следующий код:

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

Работает нормально, но я хочу сделать это условным для нескольких таблиц данных, поэтому я решил поместить второй параметр как функцию, которая возвращает объект, как показано ниже:

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

Я не могу заставить эту работу.Как я могу установить несколько свойств по умолчанию в зависимости от идентификатора данных?

Спасибо

1 Ответ

0 голосов
/ 14 декабря 2018

$.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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...