Задний план
У меня есть функция, которая принимает 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. Хотя многие ответы на оба вопроса совпадают, это не означает, что сами вопросы одинаковы.