Mam następujący kod JavaScript/kątowa:kątowe JS: angular.copy wywala przeglądarkę, gdy obiekt odwołuje inny obiekt
var a = {};
var b = {};
a.ref = b;
b.ref = a;
angular.copy(a);
Kiedy angular.copy
pożary, przeglądarka blokuje. Zakładam, że dzieje się tak dlatego, że funkcja kopiowania wykonuje głęboką kopię, a kiedy zaczyna kopiować referencję b, przechodzi do b, a następnie chce skopiować swoje odniesienie do a, tworząc w ten sposób kopię cykliczną, która nigdy nie będzie koniec.
Czy to założenie jest prawidłowe? Jeśli tak, czy istnieje sposób, aby tego uniknąć? Zakładam, że odpowiedź będzie polegać na zmianie sposobu w jaki moje dane wyglądają, ale jestem ciekawy, jak słyszę myśli innej osoby.
Interesujące. Dziękuję za wyjaśnienie mojego założenia. Wygląda na to, że struktura moich danych powinna zostać zmieniona ... – incutonez
Czy to naprawiłeś? Czy byłeś w stanie pracować z okrągłym odnośnikiem? – testing123
Naprawiliśmy to, zmieniając nasz model danych. Zamiast nadawać węzłowi potomnemu rzeczywisty obiekt nadrzędny, do każdego dziecka dodaliśmy węzeł podrzędny i identyfikator węzła nadrzędnego ... więc kiedy zaczynamy tworzyć wnuki, łatwo jest przekazać identyfikator rodzica. – incutonez