Mid #copy#reference#structuredClone#immutability
Shallow copy và deep copy khác nhau thế nào? structuredClone có giới hạn gì?
⚡ Trả lời nhanh
Shallow copy (spread, Object.assign, slice) chỉ copy cấp đầu, object lồng nhau vẫn chung tham chiếu. Deep copy sao chép đệ quy: dùng `structuredClone` (hỗ trợ Date, Map, Set, vòng tham chiếu; không clone được function, DOM, class instance giữ prototype).
Ví dụ
main.js · sửa được
So sánh các cách deep copy
| Cách | Date/Map/Set | Function | Vòng tham chiếu | undefined |
|---|---|---|---|---|
JSON.parse(JSON.stringify()) | mất/hỏng | bỏ | lỗi | bỏ key |
structuredClone | giữ | DataCloneError | giữ | giữ |
| Hàm đệ quy tự viết | tùy | tùy | cần WeakMap | tùy |