Javascript 8 | Object 2 — Object Clone, Merge
Objeyi kopyalayınca sadece o reference’i gösteren yeni bir obje yaratılır.
Yani objenin değerleri kopyalanmış olmaz. Sadece yeni yaratılan obje ayni reference’a bakmış olur.
Ya değerleri de kopyalamak istersek yani ayni reference’a bakmak istemezsek. Ayni değerlere sahip bir obje fakat hafızada farklı bir reference’da tutmak istiyorsak naparız?
1. Yol :
For ile döner. Tek tek değerleri yeni objeye atarız.
2. Yol : Object.assign
Kullanıcı objesinin içerisindeki tüm property’leri bir bir kopyalar ve o yeni objeyi döner.
NOT: Diyelim ki obje içerisinde de objeler tutuluyor. O zaman Object.assign tam olarak işe yaramaz.
Kullanıcı objesini Object.assign kullanarak klon objesine kopyaladık. Ancak içerisinde tuttuğumuz beden objesi aynı reference’a baktığı için kullanıcı objesinde yapılan değişiklik klon objesini de etkiledi. Ve işimize yaramadı.
Bunu düzeltmek için klonlarken içerdeki değer değer obje ise içteki objenin yapısınında da kopyalanması gerekmektedir. Buna deepCopy denir. Bunun içinde lodash kütüphanesi içerisindeki cloneDeep(obj) methodu kullanılabilir.
var objects = [{ ‘a’: 1 }, { ‘b’: 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
Makalelerimin tamamına erişmek isteyen arkadaşlar için hepsinin linkinin bulunduğu bir tutorial hazırladım. Aşağıdaki linkte paylaşıyorum.
https://medium.com/@omercelikceng/javascript-makalelerimin-tamam%C4%B1-45a71ac3b386