folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Javascript Inheritance Ile İlgili Bir Soru



Javascript Inheritance Ile İlgili Bir Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zurach
    zurach's avatar
    Kayıt Tarihi: 24/Temmuz/2015
    Erkek

    Arkadaslar Merhabalar, Javascript'in inheritance mekanizmasi ile ilgili olarak bir kac sorum olacakti. Her objenin gizli olarak kendi prototype'ina bagli oldugunu biliyorum.  Istenilen method veya elemanlarin bu prototype zinciri taranarak bulundugunu da biliyorum. Benim Javascript ile kafamin karistigi nokta surada:

    Javascriptte aslinda constructorlar birer fonksiyon. Bu fonksiyonlar "new" sozcugu ile cagirildigi zaman birer obje yaratiyorlar. Bu fonksiyonlar istenirse kullanici tarafindan yaziliyor istenirse built-in fonksiyonlar kullaniliyor. Javascript'te bulunan Object(),  Array() ve Date() gibi builtin objeler kendi methodlarina sahipler.

    Eger console'da typeof(Object) veya benzeri birsey yaptiysaniz gelen cevabin function oldugunu goreceksiniz.  Eger typeof(Object()) yazilirsa bu sefer gelen cevap object seklinde oluyor. Buraya kadar zaten problem yok. Demek ki Object'in kendisi de bir constructor fonksiyon. 

    Peki Object yazip yanina nokta koydugumda onume bir cok secenek geliyor. Bunlar arasinda prototype objesinin kendisi, Object.prototype icerisinde tanimli olmayan ama sadece Object icerisinde tanimli olan bircok fonksiyon, birde gizli ozellikler var, mesela getPrototypeOf veya isProtoTypeOf gibi. Bunlar Object.prototype objesine bagli degiller. Burdan gordugum kadariyla aslinda constructor fonksiyonlar kendisi de aslinda birer obje. Object constructor fonksiyonu kendisi prototype diye ayri bir obje tutuyor ve bu objenin elemanlari Javascript'te olusturulan diger objeler tarafindan inherit ediliyor fakat sadece Object'in kendisi (dikkat edin new Object() degil) hic bir obje tarafindan inherit edilmiyor.

    Buna bir aciklamaniz varsa cok yardimci olursunuz.

    Tesekkurler,

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    hatayi
    hatayi's avatar
    Kayıt Tarihi: 08/Temmuz/2013
    Erkek

    Javascript değil java olmasın?


    Tarikat-ı Aliyyeyi Tahribadiyye
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zurach
    zurach's avatar
    Kayıt Tarihi: 24/Temmuz/2015
    Erkek

    Yok hocam Javascript. Javasrcriptteki inheritance mekanizmasi class based dillerden farkli bayagi.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MadJack
    MadJack's avatar
    Kayıt Tarihi: 07/Temmuz/2014
    Erkek

    Abi sorun biraz karmaşık geldi, yanlış anlamış olabilirim. Eğer problemi doğru anladıysam aşağıda yazdıklarım anlamana yardımcı olur diye düşünüyorum.

    Şimdi object ve constructor farkını doğru anladığından emin misin? Sanki bu ikisini birbirine karıştırıyormuşsun gibi geldi bana. Javascript'te C# veya Java gibi class yazıp ondan object oluşturma gibi bir yapı yok. Javascript'te direk Object() constructor methodunu çağırarak nesne oluşturuyorsun. Yani "Object()" bir obje değil, bir objenin constructor methodu (yani typeof(Object) çağrısının sonucunun fonksiyon olması normal).

    Javascript'teki tüm nesnelerin inherite edildiği nesne olan Object nesnesi, Object() constructor'ına, prototype nesnesine ve getPrototypeOf() gibi fonksiyonlara sahip.


    Everyone sees just what they want to see.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kvasir
    kvasir's avatar
    Kayıt Tarihi: 24/Ağustos/2005
    Erkek
    mfe25 bunu yazdı

    Abi sorun biraz karmaşık geldi, yanlış anlamış olabilirim. Eğer problemi doğru anladıysam aşağıda yazdıklarım anlamana yardımcı olur diye düşünüyorum.

    Şimdi object ve constructor farkını doğru anladığından emin misin? Sanki bu ikisini birbirine karıştırıyormuşsun gibi geldi bana. Javascript'te C# veya Java gibi class yazıp ondan object oluşturma gibi bir yapı yok. Javascript'te direk Object() constructor methodunu çağırarak nesne oluşturuyorsun. Yani "Object()" bir obje değil, bir objenin constructor methodu (yani typeof(Object) çağrısının sonucunun fonksiyon olması normal).

    Javascript'teki tüm nesnelerin inherite edildiği nesne olan Object nesnesi, Object() constructor'ına, prototype nesnesine ve getPrototypeOf() gibi fonksiyonlara sahip.

    Doğru anlamışsın. Aradığı cevap bold olan yer.

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    zurach
    zurach's avatar
    Kayıt Tarihi: 24/Temmuz/2015
    Erkek

    Ornekler ustunden gidelim.

    function deneme (isim, soyisim,yas){
        this.isim = isim;
        this.soyisim = soyisim;
        this.yas = yas;
    }

    Constructor fonksiyon diye belirttigim sey buydu. Sonucta bir fonksiyon tanimi. Bunu mesela ,
    var obj = new deneme();     seklinde cagirirsak obj degiskeni olusturulan yeni bir objeye baglaniyor. 
    Bu arada deneme adli fonksiyon parantezlerle cagirmadan yanina kendi icersindeki methodlara yada propertylere baktigimizda prototype'i goruyoruz. new deneme() yazarak yarattigimiz obj objesi 
    deneme.prototype'in ozelliklerini inherit ediyor, direkt olarak deneme'nin kendisinin degil. Sanirim ayni sey Object.prototype'ta da var. Yani yeni uretilen objeler inherit edecegi seyleri Object'ten degil
    Object.prototype'tan inherit ediyorlar. Normalde var x = new Object() diye birsey yaptigimizda x' e ait herhangi bir prototype gozukmuyor console'da. Fakat eger sadece Object'in elemanlarini incelersek icerisinde bircok tanimli fonksiyon bir de Object.prototype'i goruyoruz. O zaman yeni uretilen objeler aslinda ozelliklerini Object'in kendisinden inherit etmemis oluyorlar, onun yerine Object.prototype'in methodlarini veya ozelliklerini inherit ediyorlar benim anladigim kadariyla.  deneme orneginden yola cikarak diyorum ki o zaman Object in kendisi de yukaridaki gibi bir fonksiyon. Javascript run-time environment anladigim kadariyla yukaridaki gibi her constructor fonksiyona birde prototype objesi bagliyor?

    Dogru muyum? 

Toplam Hit: 861 Toplam Mesaj: 6
javascript inheritance