sfondo
Ho una funzione che accetta un config
oggetto come argomento. All'interno della funzione ho anche default
oggetto. Ciascuno di questi oggetti contiene proprietà che essenzialmente funzionano come impostazioni per il resto del codice all'interno della funzione. Per evitare di dover specificare tutte le impostazioni all'interno config
dell'oggetto, utilizzo il extend
metodo di jQuery per inserire un nuovo oggetto, settings
con qualsiasi valore predefinito default
dall'oggetto se non fosse specificato config
nell'oggetto:
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
Funziona benissimo, ma mi piacerebbe riprodurre questa funzionalità senza la necessità di jQuery. Esiste un mezzo altrettanto elegante (o simile a) per farlo con il semplice javascript?
Modifica: giustificazione non duplicata
Questa domanda non è un duplicato della domanda " Come posso unire dinamicamente le proprietà di due oggetti JavaScript? ". Considerando che quella domanda vuole semplicemente creare un oggetto che contenga tutte le chiavi e i valori di due oggetti separati, voglio specificamente affrontare come farlo nel caso in cui entrambi gli oggetti condividano alcune ma non tutte le chiavi e quale oggetto avrà la precedenza ( il valore predefinito) per l'oggetto risultante nel caso in cui siano presenti chiavi duplicate. E ancora più specificamente, volevo affrontare l'uso del metodo jQuery per raggiungere questo obiettivo e trovare un modo alternativo per farlo senza jQuery. Sebbene molte delle risposte a entrambe le domande si sovrappongano, ciò non significa che le domande stesse siano le stesse.