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