$.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());