Javascript Ve Referans Olayı

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo

    selams gençler

    şimdi javascriptteki = objelerde referans olarak atadığı için bir değer değiştirince zincirleme her bok değişiyor.

    atıyorum. 

    var a = {name: 'ahmet'}

    var b = a

    b.name = "mehmet"

    simdi a.name de mehmet oldu :P 

    ben bunu aşmak için jsonluyorum veriyi. şöyle ki : var b = JSON.parse(JSON.stringify(a))
    yapıyorum :P 

    neden böyle bir şeye ihtiyaç duyuyorum ? bir array var, içinde bir tablodaki satırlar var. bir satırı klonla dediğinde kullanıcı o satırdaki verileri alıp sonuna ekliyorum arrayın.

    tamam yaptım çalışıyo falan ama bu olay bana çok amelece geliyo. bunun doğrusu nedir ? siz nasıl yapıyorsunuz ?

    googleda aratınca çıkan linkleri atmayın lütfen hepsine baktım, nasıl yapılır diye sormuyorum, çözdüm zaten. daha güzel bir yöntem varmı, saçma bişey mi yapıyorum diye soruyorum. bulduğum en relax yöntem json olayı (javascript için json çözmek baya hızlı bişey )

    yolbulucu tarafından 04/Şub/21 11:24 tarihinde düzenlenmiştir

    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Https
    Https's avatar
    Kayıt Tarihi: 05/Ağustos/2017
    Erkek

     

     

    var a = {name:" ahmet", surname: "yolbulucu", site:"tahribat"};
    var b = $.extend(true,{},a);
    b.name="mehmet";
    b.site="google.com";
    console.table(a);
    console.table(b);

     

     

     

    javascript pek bilmiyorum hocam.

    Ama arama yapınca buradaki yöntemlerden jquery'li olanı denedim, sanırım oldu sende bir kontrol edersin;

    https://stackoverflow.com/a/12690181/5646313

     

    edit:

    birde https://api.jquery.com/jquery.extend/ burda kopyalanan objelerin property si null veya undefined  ise kabul edilmez gibi bir şey yazmış hocam eğer daha önce deneysen bunu sorun buysa bundanda kaynaklanıyor olabilir.

     

     

     

     

    Https tarafından 04/Şub/21 11:19 tarihinde düzenlenmiştir
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo
    Https bunu yazdı

     

     

    var a = {name:" ahmet", surname: "yolbulucu", site:"tahribat"};
    var b = $.extend(true,{},a);
    b.name="mehmet";
    b.site="google.com";
    console.table(a);
    console.table(b);

     

     

     

    javascript pek bilmiyorum hocam.

    Ama arama yapınca buradaki yöntemlerden jquery'li olanı denedim, sanırım oldu sende bir kontrol edersin;

    https://stackoverflow.com/a/12690181/5646313

     

    edit:

    birde https://api.jquery.com/jquery.extend/ burda kopyalanan objelerin property si null veya undefined  ise kabul edilmez gibi bir şey yazmış hocam eğer daha önce deneysen bunu sorun buysa bundanda kaynaklanıyor olabilir.

     

     

     

     

    ilk mesajı editledim hocam, bold kısma bakabilirsin .


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Şuraya baktınız mı? https://stackoverflow.com/questions/12690107/clone-object-without-reference-javascript

    Olay şu: primitif tipler (string, sayı) kopyalanarak aktarılıyor. Sıkıntı yok. Nesneler ve diziler ise referansı ile aktarılıyor. Sorun burada başlıyor. var a = birseyler; var b = a; dediğin anda aslında a ve b aynı nesneyi gösteriyor (name: 'ahmet' olan nesne). aslında a ve b sadece bilinmez bir nesneye atadığın referans. a ve b eşit olduğu ve aynı şeyi gösterdiği için, yaptığın değişiklikler ikisinde de geçerli oluyor.

    Not: Aslında hep değeri ile aktarılıyor. Fakat nesnelerin değeri referans. Yani referans kopyalanıyor. Bu bağlamda aynı Java gibi davranıyor. Kaynak: https://stackoverflow.com/questions/518000/is-javascript-a-pass-by-reference-or-pass-by-value-language 

    Sizin çözüm doğru. Performans cezalı ama doğru.

    https://stackoverflow.com/a/12690181


    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Elif - Efe
    rakkoc
    rakkoc's avatar
    Kayıt Tarihi: 19/Aralık/2003
    Homo

    https://www.samanthaming.com/tidbits/70-3-ways-to-clone-objects/

     

    benim en sevdiğim "let a = {...b}" Json a cevirmek de hızlıdır ama buna göre daha maliyetli bir yönetm sonuçta. 

     

     

    rakkoc tarafından 04/Şub/21 13:16 tarihinde düzenlenmiştir

    Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

     

    sen abine sorsana böyle şeyleri ya. 


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo
    rakkoc bunu yazdı

    https://www.samanthaming.com/tidbits/70-3-ways-to-clone-objects/

     

    benim en sevdiğim "let a = {...b}" Json a cevirmek de hızlıdır ama buna göre daha maliyetli bir yönetm sonuçta. 

     

     

    ben bunu bilmiyodum ya çözüyomuş benim işi eyvallah abi. 


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    makets
    makets's avatar
    Kayıt Tarihi: 17/Ocak/2010
    Erkek

    Nested objeleri clonelarken üstteki yöntemler yemeyebilir check edin derim

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    yamulmuyorsam temelde pass by value, pass by reference olayindan kaynaklaniyor. bunun uzerinden temeline inip js in yorumlanirken hangisini nerede kullandigini ogrenirsen temelini kavramis olursun.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    rakkoc bunu yazdı

    https://www.samanthaming.com/tidbits/70-3-ways-to-clone-objects/

     

    benim en sevdiğim "let a = {...b}" Json a cevirmek de hızlıdır ama buna göre daha maliyetli bir yönetm sonuçta. 

     

     

    Olay budur. Alternatifi olarak object.assign var bir de.

    Spread operatoru diye aratırsan bulursun buradaki kullanımı.

    Haricen, object/array destruction diye de aratırsan hoş şeyler öğrenmiş olursun :)


    0x0480 takilin madem ﷽﷽﷽
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    makets bunu yazdı

    Nested objeleri clonelarken üstteki yöntemler yemeyebilir check edin derim

    Yer hocam niye yemesin. Shadow değil baya baya hard copy yapıyorlar.


    0x0480 takilin madem ﷽﷽﷽
Toplam Hit: 2483 Toplam Mesaj: 12
javascript reference