JavaScript OOP (Prototip) #2

Nov 27 2022
Merhaba arkadaşlar, ben Bennison, Bu blogda Javascript'te OOP'nin nasıl çalıştığını ve klasik OOP'tan nasıl farklı olduğunu anlatacağım. Bu makaleyi okumadan önce, lütfen OOP'nin temelleri hakkında olan önceki blogumu okuyun.
JavaScript OOP bölüm II

Merhaba arkadaşlar, ben Bennison, Bu blogda Javascript'te OOP'nin nasıl çalıştığını ve klasik OOP'tan nasıl farklı olduğunu anlatacağım. Bu makaleyi okumadan önce, lütfen OOP'nin temelleri hakkında olan önceki blogumu okuyun .

Prototip nedir?

  • Javascript'te prototip denen bir şeye sahibiz, JavaScript'te her nesne belirli bir prototipe bağlanacaktır. Yani her nesnenin prototipleri vardır. prototip ayrıca özellikler ve yöntemler içerir.
  • Burada önemli olan prototip metotları ve özelliklerine nesne tarafından erişilebilmesidir.
  • Klasik OOP ve Javascript OOP
  • Klasik OOP'de, somutlaştırma adı verilen sınıftan bir nesne başlatılır. Burada sınıf, Nesneleri oluşturmak için yalnızca bir plandır.
  • Ancak Javascript'te bu terminoloji farklıdır. Burada her nesne diğer nesnelerle bağlantılıdır ve bu nesnelere prototip adı verilir .
  • Prototip kalıtımı, yöntemleri içeren bir prototip ve bu prototipe bağlı tüm nesneler tarafından erişilebilen prototipler anlamına gelir.
  • Böylece nesne, yöntemleri ve özellikleri prototipten devralır, buna prototip kalıtımı denir. bu miras, bir sınıfın diğer sınıftan miras aldığı sınıf mirasından farklıdır. Ancak bu durumda, temel sınıftan miras alınan örnek.
  • Yukarıdaki görüntüde, javascript OOP oku yukarıyı gösteriyor, bu, nesnenin davranışlarını prototiplere devrettiği anlamına geliyor.
  • Klasik OOP'de, yöntemler sınıftan örneklere (nesnelere) kopyalanır.
  • const numbers = [1, 2, 3, 4,5];
    numbers.map((num) => num * 2)
    

  • Bir javascript harita yöntemini anlamak için google'a göz atarsak, MDN belgesinde bunu Array.prototype.map() gibi görebiliriz.
  • Burada " Array.prototype()" , JavaScript'te oluşturduğumuz tüm dizi nesnelerinin prototipidir. Bu nedenle, tüm dizilerin harita yöntemine erişimi vardır.
  • Şimdi, bu prototip nesnesi, bir harita da dahil olmak üzere tüm dizi yöntemlerini içerir.
  • Dolayısıyla, yukarıdaki örnekte, “ Array.Prototype” sayı dizisinin prototipidir, bu sayı dizisi değişkeni prototiplere bağlıdır. Bu nedenle “ array.prototype ” nesnesinde tanımlanan tüm metotlara erişime sahiptir. Dolayısıyla, yukarıdaki örnekte "sayı" dizisi, yöntem eşlemesini devralır.
  • Javascript'te prototip kalıtımı üç yollu uygulayabiliriz, biri yapıcı işlev, ikincisi ES6 sınıfları ve sonuncusu Object.Create() yöntemidir.
  • İşlevlerden nesneler oluşturmak için bir yapıcı işlevi kullanılır. Array ve map yöntemleri gibi yerleşik nesneler bu şekilde uygulanır.
  • Bu, yapıcı işlevlere modern bir alternatiftir. ES6 Sınıfları, yapıcı işleviyle aynı şekilde çalışır. ES6 sınıfı Klasik bir OOP gibi davranmaz. Sahne arkasında, ES6 sınıfları, Yapıcı işlevlerle uygulanır.
  • class User {
      constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
      }
      getFullName() {
        console.log(this.firstName + ' ' + this.lastName);
      }
    }
    
    const user = new User('Bennison', 'J');
    
    console.log(user); // { firstName: 'Bennison', lastName: 'J' }
    
    console.log(user.hasOwnProperty('firstName')); // true
    console.log(user.hasOwnProperty('getFullName')); // false
    

  • Yukarıdaki örnekte, özelliği kontrol etmemize yardımcı olan 'hasOwnProperty' yöntemini görebiliriz ve bu yöntem, hasOwnProperty yöntemi olarak adlandırılan nesnenin kendi özelliğidir.
  • object.create()” yöntemi, bir nesneyi bir prototip nesneye bağlamanın en kolay yoludur.
  • const objOne = {
      firstName: 'Bennison',
      lastName: 'J',
      getFullName: function () {
        console.log(this.firstName + ' ' + this.lastName);
      }
    };
    
    const objTwo = Object.create(objOne);
    
    console.log(objTwo); // {}
    objTwo.getFullName(); //  Bennison J
    

  • “Object.create” yöntemi, prototip ile birlikte boş bir nesne döndürür. ve prototip, bu yönteme aktardığımız şey olacaktır.
  • Umarım bu Blog'da Javascript'te prototip kalıtımın temellerini öğrenmişizdir, yukarıdaki örnekleri anlayamadıysanız merak etmeyin, gelecek bloglarımda bu kavramlar hakkında daha fazla anlatacağım. Bu blogu okuduğunuz için teşekkürler, Yakında görüşürüz.