Get Mystery Box with random crypto!

Shallow copy va Deep Copy haqida nimalarni bilasiz? (...davom | Sherali Turdiyev

Shallow copy va Deep Copy haqida nimalarni bilasiz?

(...davomi)

1. Shallow copy uchun:
Javascript tilida odatda {...obj}, Object.assign({}, obj), arr.map/filter/reduce/slice, Array.from(arr) va boshqa methodlarni ishlatiladi.

Aytgancha, ESLATMA: = assign qilish operatori non-primitive tiplarini nusxalash uchun xizmat qilmaydi, bitta manzilga biriktirib quyadi.


2. Deep copy uchun:
1) JSON.parse(JSON.stringify(obj)) ni ishlatishadi. Lekin serialize bo'lmaydigan objectlarda xato ishlaydi, ya'ni ba'zi mulmotlar(Date, Function, undefined, Infinity, arguments, AsyncFunction, GereatorFunction, ...) yo'qotilib nusxalanadi.

2) Third-party kutubxonalar: Lodashda cloneDeep, rfdc(Really Fast Deep Copy) libi, Jqueryda extend, Ramda da clone, Angularda angular.copy va boshqalari

3) O'zingiz custom yechim qilishingiz, ya'ni har bir elementni recursive tarzda yurib chiqib ko'chirib chiqasiz.

Ko'pinchilik shallow copy ni deep copy deb atashtirishadi va muammolarga duch kelishadi.

Masalan: Ko'p darajali yani ichma-ichli bo'lgan obyektni shallow copy qilib, keyin ichki obyektlarni o'zgartirganda, ikkala(original va dublicated) obyekt da ham bir vaqtda o'zgaradi.

#suhbat #interview #js #copy #clone