Περισσότερα
Ποιος είναι ο πιο αποτελεσματικός τρόπος για να κλωνοποιήσετε βαθιά ένα αντικείμενο στη JavaScript;
Ποιος είναι ο πιο αποτελεσματικός τρόπος για να κλωνοποιήσετε ένα αντικείμενο JavaScript; Έχω δει να χρησιμοποιείται το obj = eval(uneval(o));
, αλλά αυτό είναι μη τυποποιημένο και υποστηρίζεται μόνο από τον Firefox.
Έχω κάνει πράγματα όπως obj = JSON.parse(JSON.stringify(o));
αλλά αμφισβητώ την αποδοτικότητα.
Έχω δει επίσης αναδρομικές συναρτήσεις αντιγραφής με διάφορες ατέλειες.
<br />,
Εκπλήσσομαι που δεν υπάρχει καμία κανονική λύση.
5181
3
Μητρική βαθιά κλωνοποίηση
Ονομάζεται "δομημένη κλωνοποίηση", λειτουργεί πειραματικά στο Node 11 και αργότερα, και ελπίζουμε ότι θα προσγειωθεί στα προγράμματα περιήγησης. Δείτε αυτή την απάντηση για περισσότερες λεπτομέρειες.
Γρήγορη κλωνοποίηση με απώλεια δεδομένων - JSON.parse/stringify
Αν δεν χρησιμοποιείτε
Date
, συναρτήσεις,undefined
,Infinity
, RegExps, Maps, Sets, Blobs, FileLists, ImageDatas, sparse Arrays, Typed Arrays ή άλλους πολύπλοκους τύπους μέσα στο αντικείμενό σας, μια πολύ απλή μονοσήμαντη λύση για τον βαθύ κλωνοποίηση ενός αντικειμένου είναι:JSON.parse(JSON.stringify(object))
Αν δεν υπήρχε κάποιο ενσωματωμένο, μπορείτε να δοκιμάσετε: