Задний план
У меня есть функция, которая принимает configобъект в качестве аргумента. Внутри функции у меня также есть defaultобъект. Каждый из этих объектов содержит свойства, которые, по сути, работают как настройки для остальной части кода внутри функции. Чтобы избежать необходимости указывать все параметры внутри configобъекта, я использую extendметод jQuery для заполнения нового объекта settingsлюбыми значениями по умолчанию из defaultобъекта, если они не были указаны в configобъекте:
var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};
var settings = $.extend(default, config);
//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};
Проблема
Это прекрасно работает, но я хотел бы воспроизвести эту функцию без использования jQuery. Есть ли не менее элегантный (или близкий к нему) способ сделать это с помощью простого javascript?
Изменить: неповторяющееся обоснование
Этот вопрос не дублирует вопрос « Как я могу динамически объединить свойства двух объектов JavaScript? ». Принимая во внимание, что этот вопрос просто хочет создать объект, содержащий все ключи и значения из двух отдельных объектов - я специально хочу рассмотреть, как это сделать в случае, если оба объекта имеют общие ключи, но не все, и какой объект получит приоритет ( значение по умолчанию) для результирующего объекта в случае наличия повторяющихся ключей. И даже более конкретно, я хотел рассмотреть использование метода jQuery для достижения этой цели и найти альтернативный способ сделать это без jQuery. Хотя многие ответы на оба вопроса совпадают, это не означает, что сами вопросы одинаковы.