Hintergrund
Ich habe eine Funktion, die ein config
Objekt als Argument nimmt. Innerhalb der Funktion habe ich auch default
Objekt. Jedes dieser Objekte enthält Eigenschaften, die im Wesentlichen als Einstellungen für den Rest des Codes innerhalb der Funktion dienen. Um zu vermeiden, dass alle Einstellungen innerhalb des config
Objekts angegeben werden müssen, verwende ich die extend
Methode von jQuery , um ein neues Objekt settings
mit Standardwerten aus dem default
Objekt auszufüllen, wenn diese nicht im config
Objekt angegeben wurden:
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};
Problem
Dies funktioniert hervorragend, aber ich möchte diese Funktionalität ohne die Notwendigkeit von jQuery reproduzieren. Gibt es ein ebenso elegantes (oder nahes) Mittel, um dies mit einfachem altem Javascript zu tun?
Bearbeiten: Nicht doppelte Begründung
Diese Frage ist kein Duplikat der Frage " Wie kann ich Eigenschaften von zwei JavaScript-Objekten dynamisch zusammenführen? ". Während diese Frage lediglich ein Objekt erstellen möchte, das alle Schlüssel und Werte aus zwei separaten Objekten enthält, möchte ich speziell darauf eingehen, wie dies zu tun ist, falls beide Objekte einige, aber nicht alle Schlüssel gemeinsam haben und welches Objekt Vorrang hat ( Standardeinstellung) für das resultierende Objekt für den Fall, dass doppelte Schlüssel vorhanden sind. Und noch genauer, ich wollte die Verwendung der jQuery-Methode ansprechen, um dies zu erreichen, und einen alternativen Weg finden, dies ohne jQuery zu tun. Während sich viele der Antworten auf beide Fragen überschneiden, bedeutet dies nicht, dass die Fragen selbst gleich sind.
jQuery.isPlainObject
undjQuery.isFunction