Mam kilka prototypów JavaScript. Początkowo instancje będą zawierały tylko identyfikatory, z pewnymi ogólnymi informacjami o posiadaczach miejsc dla innych danych. Następnie wysyłam wiadomość do serwera z identyfikatorem i typem obiektu (przy użyciu funkcji AJAX jQuery), a serwer zwraca obiekt JSON z wszystkimi brakującymi informacjami (ale bez identyfikatora). Zmienne w zwróconym obiekcie mają dokładnie taką samą nazwę jak te w istniejącym obiekcie.Kopiowanie obiektu AJAX JSON do istniejącego obiektu
Jaki jest najprostszy sposób przeniesienia tego do istniejącego pustego obiektu? Mam wymyślić kilka alternatyw
- ustawić obiekt równą zwróconego obiektu, a następnie skopiować na identyfikatorze (traci funkcji prototypów?)
- utworzyć funkcję dla każdego obiektu, który zajmuje obiekt o identycznych struktura i kopiuje dane
- pętli par klucz-wartość obiektu JSON i skopiować je do istniejącego obiektu
Jeśli używam trzecią opcję, to jest poprawny sposób to zrobić? :
for (var key in json) {
if (object.hasOwnProperty(key)) {
object[key] = json[key];
}
}
zakładając json
jest zwracany obiekt i object
jest istniejący obiekt.
Jeśli 'json' jest zwykłym JSON, to nie potrzebuję nawet sprawdzenia' hasOwnProperty'. Chyba, że ktoś grał na 'Object.prototype'. –
Pytanie brzmi, co chcesz zrobić ze swoim obiektem JSON. Jeśli chcesz wycenić obiekt, JSON.parse() robi to za Ciebie. Jeśli chcesz połączyć go z istniejącym obiektem, jQuery.extend() będzie lepszą propozycją. –
@PaulGrime Robię to jako środek ostrożności w przypadku, gdy istnieje dodatkowy klucz w obiekcie 'json', którego nie chcę w istniejącym obiekcie'. Jeśli zauważysz, przechodzę przez klawisze w 'json', ale sprawdzam przed' obiektem'. – Jaws212