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