Contexte
J'ai une fonction qui prend un configobjet comme argument. Dans la fonction, j'ai aussi un defaultobjet. 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' configobjet, j'utilise la extendméthode de jQuery pour remplir un nouvel objet, settingsavec toutes les valeurs par défaut de l' defaultobjet si elles n'ont pas été spécifiées dans l' configobjet:
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.