JavaScript Chaining Metotlar

Nesne Yönelimli Programlama desteği sunan programlama dillerinde kullanılan Chaining Metotlar ile ilgili bilgiler yer alıyor.

Chaining metotlar veya zincirleme metotlar Nesne Yönelimli Programlamayı destekleyen çoğu programlama dilinde olan bir özelliktir.

Bu yöntemi JavaScript’in en çok bilinen framework’ü olan jQuery’de görebilirsiniz.

Chaining metodun amacı nesneye ait fonksiyonları sürekli nesneAdi.metotAdi gibi çağırmak yerine nesneAdi.metotAdi().metotAdi() gibi bir kullanımla çağırma imkanı verir.

Her bir metodun zincir halkası gibi birbirine bağlı olmasından dolayı bu yönteme Zincirleme metot denir.

<script>
"use strict";
  function HesapMakinesi(sayi) {
    this._sonuc = sayi;
  }

  HesapMakinesi.prototype = {
    constructor: HesapMakinesi,
    Toplama: function(sayi) {
      this._sonuc += sayi;
      return this;
    },
    Cikarma: function(sayi) {
      this._sonuc -= sayi;
      return this;
    },
    Carpma: function(sayi) {
      this._sonuc *= sayi;
      return this;
    },
    Bolme: function(sayi) {
      this._sonuc /= sayi;
      return this;
    },
    Goster: function() {
      console.log(this._sonuc);
      return this;
    }
}

var hesap = new HesapMakinesi(3);
hesap.Toplama(10).Cikarma(3).Carpma(5).Goster().Bolme(5).Goster();
</script>

Örnekte HesapMakinesi nesnesi prototype özelliğine eklenen her bir metot return ifadesi ile nesnenin referansını geri döndürür.

Referans değerini bildiğimiz için tekrar HesapMakinesi nesnesine ait metotları ve özellikleri kullanabiliriz.

Örnekte tüm metotlara return anahtar kelimesi ile nesnenin referansı geri döndürülmüştür.

Ancak bu yöntem için her birine eklenme zorunluluğu yoktur.

Goster() metodunda return this ifadesi kullanılmazsa nesne referansı bilinmediği için Goster() metodundan sonra nesneye ait metotlar tekrar kullanılmaz.

<script>
"use strict";
  function HesapMakinesi(sayi) {
    this._sonuc = sayi;
  }

  HesapMakinesi.prototype = {
    constructor: HesapMakinesi,
    Toplama: function(sayi) {
      this._sonuc += sayi;
      return this;
    },
    Cikarma: function(sayi) {
      this._sonuc -= sayi;
      return this;
    },
    Carpma: function(sayi) {
      this._sonuc *= sayi;
      return this;
    },
    Bolme: function(sayi) {
      this._sonuc /= sayi;
      return this;
    },
    Goster: function() {
      console.log(this._sonuc);
      return this._sonuc;
    }
}

var hesap = new HesapMakinesi(3);
hesap.Toplama(10).Cikarma(3).Carpma(5).Goster();  // Artık nesneye ait metotlara ulaşamayız.
//hesap.Toplama(10).Cikarma(3).Carpma(5).Goster().Bolme(5).Goster();
</script>

JavaScript Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!