Странно, я не нахожу здесь сравнение по значениям (возможно, пропущено среди стольких решений).
Я хотел бы охватить случай, когда объект считается пустым, если все его значения не определены:
const isObjectEmpty = ( obj ) => Object.values( obj ).every( val => typeof val === "undefined" );
isObjectEmpty({ foo: undefined, bar: undefined }): // true
isObjectEmpty({ foo: false, bar: null }): // false
Таким образом, мы можем расширять, скажем, объект параметров, только если предоставлены дополнительные параметры
function onSubmit({ fullPage, width, height }) {
const baseOptions = { fullPage },
clip = { width, height },
options = isObjectEmpty( clip ) ? baseOptions : { ...baseOptions, clip };
//...
}