Antecedentes
Tengo una función que toma un config
objeto como argumento. Dentro de la función, también tengo default
objeto. Cada uno de esos objetos contiene propiedades que esencialmente funcionan como configuraciones para el resto del código dentro de la función. Para evitar tener que especificar todas las configuraciones dentro del config
objeto, uso el extend
método de jQuery para completar un nuevo objeto, settings
con los valores predeterminados del default
objeto si no se especificaron en el config
objeto:
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};
Problema
Esto funciona muy bien, pero me gustaría reproducir esta funcionalidad sin la necesidad de jQuery. ¿Existe un medio igualmente elegante (o cercano a) para hacer esto con javascript simple?
Editar: Justificación no duplicada
Esta pregunta no es un duplicado de la pregunta " ¿Cómo puedo fusionar propiedades de dos objetos JavaScript de forma dinámica? ". Mientras que esa pregunta simplemente quiere crear un objeto que contenga todas las claves y valores de dos objetos separados, quiero abordar específicamente cómo hacer esto en caso de que ambos objetos compartan algunas claves, pero no todas, y qué objeto tendrá prioridad ( el predeterminado) para el objeto resultante en caso de que haya claves duplicadas. E incluso más específicamente, quería abordar el uso del método de jQuery para lograr esto y encontrar una forma alternativa de hacerlo sin jQuery. Si bien muchas de las respuestas a ambas preguntas se superponen, eso no significa que las preguntas en sí sean las mismas.