Arkadaşlar merhaba. Projem için bir fonksiyon yazdım (buraya fonksiyonun gerekli kısmını koyuyorum sadece). Fonksiyonlardan birisi diziye belirli bir kalıpta veri ekliyor, diğeri ise dizi içinde anahtara göre ilgili veriyi güncelliyor. Veri yoksa da oluşturuyor. add() fonksiyonunda dizi tanımlarken bir alt diziyi de değişken ile çekiyorum. Sorun şu ki, anahtara göre güncelleme yapsam bile, diğer anahtarın altındaki alt dizi de (ilk başta değişken ile tanımlanan) güncelleniyor. JS'de ilk defa böyle birşey başıma geldi. Sorunu nasıl çözebilirim acaba? Kod yapısı aşağıdaki gibidir.
var test = function() {
            return {
                veriable: [],
                defaultData: {
                    'page': 1,
                    'count': 25
                },
                add:  function(key){
                    var md5Key = $.md5(key);
                    if(!this.veriable[md5Key]){
                        this.veriable[md5Key] = {
                            'test': 'DENEME 123',
                            'key': key,
                            'data': this.defaultData
                        };
                    }
                },
                change:  function(key, dataKey, value){
                    var md5Key = $.md5(key);
                    if(!this.veriable[md5Key]){
                        return false;
                    }else{
                        this.veriable[md5Key].data[dataKey] = value;
                    }
                }
            }
        }();

// Verileri Ekliyor:
test.add('test1');
test.add('test2');
test.add('test3');

// test2 anahtarına ait array'da 'data' alt array'ında 'asd' anahtarlı veri oluşturuyor/güncelliyor
// Ancak, add() metodunda this.defaultData ile tanımlanan 'data' alt array'ı diğer tüm array'larda da değişmiş oluyor
test.change('test2', 'asd', 'R10.NET');

//SONUÇ:
console.log(test.veriable);
// ÇIKTI
  1. 5a105e8b9d40e1329780d62ea2265d8a:
    1. data: {page: 1, count: 25, asd: 'R10.NET'}
    2. key: "test1"
    3. test: "DENEME 123"
    4. [[Prototype]]: Object
  2. 8ad8757baa8564dc136c1e07507f4a98:
    1. data: {page: 1, count: 25, asd: 'R10.NET'}
    2. key: "test3"
    3. test: "DENEME 123"
    4. [[Prototype]]: Object
  3. ad0234829205b9033196ba818f7a872b:
    1. data: {page: 1, count: 25, asd: 'R10.NET'}
    2. key: "test2"
    3. test: "DENEME 123"