tło
Mam funkcję, która przyjmuje config
obiekt jako argument. W ramach funkcji mam również default
obiekt. Każdy z tych obiektów zawiera właściwości, które zasadniczo działają jako ustawienia dla pozostałej części kodu w funkcji. Aby uniknąć konieczności określania wszystkich ustawień w config
obiekcie, używam extend
metody jQuery do wypełnienia nowego obiektu, settings
z dowolnymi wartościami domyślnymi z default
obiektu, jeśli nie zostały określone w config
obiekcie:
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
To działa świetnie, ale chciałbym odtworzyć tę funkcjonalność bez potrzeby korzystania z jQuery. Czy istnieje równie elegancki (lub zbliżony) sposób zrobienia tego za pomocą zwykłego javascript?
Edycja: Wyrównanie bez powtórzeń
To pytanie nie jest powtórzeniem pytania „ Jak mogę dynamicznie scalać właściwości dwóch obiektów JavaScript? ”. Podczas gdy to pytanie chce po prostu utworzyć obiekt, który zawiera wszystkie klucze i wartości z dwóch oddzielnych obiektów - szczególnie chcę się zająć, jak to zrobić w przypadku, gdy oba obiekty mają niektóre, ale nie wszystkie klucze, i który obiekt uzyska pierwszeństwo wartość domyślna) dla wynikowego obiektu w przypadku zduplikowanych kluczy. A dokładniej, chciałem zająć się wykorzystaniem metody jQuery, aby to osiągnąć i znaleźć alternatywny sposób na zrobienie tego bez jQuery. Chociaż wiele odpowiedzi na oba pytania pokrywa się, nie oznacza to, że same pytania są takie same.