Contexte
J'ai une fonction qui prend un config
objet comme argument. Dans la fonction, j'ai aussi un default
objet. Chacun de ces objets contient des propriétés qui fonctionnent essentiellement comme des paramètres pour le reste du code dans la fonction. Afin d'éviter d'avoir à spécifier tous les paramètres de l' config
objet, j'utilise la extend
méthode de jQuery pour remplir un nouvel objet, settings
avec toutes les valeurs par défaut de l' default
objet si elles n'ont pas été spécifiées dans l' config
objet:
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};
Problème
Cela fonctionne très bien, mais j'aimerais reproduire cette fonctionnalité sans avoir besoin de jQuery. Existe-t-il un moyen tout aussi élégant (ou proche de) de le faire avec du javascript ordinaire?
Edit: Justification non dupliquée
Cette question n'est pas un double de la question " Comment fusionner dynamiquement les propriétés de deux objets JavaScript? ". Alors que cette question veut simplement créer un objet qui contient toutes les clés et valeurs de deux objets séparés - je veux spécifiquement expliquer comment faire cela dans le cas où les deux objets partagent certaines mais pas toutes les clés et quel objet aura la priorité ( la valeur par défaut) pour l'objet résultant dans le cas où il y aurait des clés en double. Et plus précisément encore, je voulais aborder l'utilisation de la méthode de jQuery pour y parvenir et trouver un moyen alternatif de le faire sans jQuery. Bien que de nombreuses réponses aux deux questions se chevauchent, cela ne signifie pas que les questions elles-mêmes sont les mêmes.