JavaScript'ta Factory Function'lar ve Constructor Function'lar
Nesneleri tek tek oluşturmak bir hatadır.
Eğer 100 sınıf arkadaşınız varsa ve her biri için bir nesne oluşturmanız gerekiyorsa, nesneleri tek tek yazmak sorunlara yol açar. Mantığınızı çok fazla kez tekrarlarsınız. Ayrıca hata (bug) yapma riskiniz de vardır. Örneğin, kodunuzun ilerleyen kısımlarında yanlışlıkla bir özellik (property) adının üzerine yazabilirsiniz.
Mantığı yeniden kullanmak için daha iyi bir yola ihtiyacınız var.
Factory Function'lar Bir fabrika düşünün. İçeriye ham maddeler koyarsınız ve bitmiş bir ürün alırsınız. Bir factory function da aynısını yapar. Parametreleri alır ve yeni bir nesne döndürür.
Örnek:
function classFactory(name) {
return {
reply() {
return `${name} is present`
}
}
}
Bu yaklaşım ismi güvende tutar. İsim fonksiyon kapsamı (scope) içinde kaldığı için yanlışlıkla değiştiremezsiniz. Mantığı bir kez yazarsınız ve defalarca yeniden kullanırsınız.
Constructor Function'lar
Constructor function'lar da nesne oluşturur. this anahtar kelimesini ve new anahtar kelimesini kullanırlar. Geleneksel olarak, bu fonksiyonlar büyük harfle başlar.
Örnek:
function Classmate(name) {
this.name = name
this.reply = function() {
return `${this.name} is present`
}
}
new anahtar kelimesini kullandığınızda, JavaScript işi sizin yerinize yapar. Yeni bir nesne oluşturur, onu this'e atar ve otomatik olarak döndürür. Bir return ifadesine ihtiyacınız yoktur.
Kodunuzu ölçeklendirmek Büyük miktardaki verileri işlemek için bu yöntemleri dizilerle (arrays) birleştirebilirsiniz.
const names = ['Kali', 'Andrew', 'Pearl', 'Percy']
const classmates = names.map(name => new Classmate(name))
classmates.forEach(c => console.log(c.reply()))
Bu, kodunuzu temiz ve ölçeklenebilir hale getirir.
Temel amaç basittir:
- Mantığınızı bir kez yazın.
- Her yerde yeniden kullanın.
- Tekrardan kaçının.
Kaynak: https://dev.to/pearlodi/factory-functions-and-constructor-functions-in-javascript-lmb