Fabrika İşlevleri
Kapanımlar aracılığıyla özel duruma sahip nesneler oluşturun.
Fabrika İşlevleri, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 4 dersten oluşur.
Fabrika İşlevi Nedir
Fabrika işlevi, yeni bir nesne döndüren herhangi bir işlevdir. Oluşturucudan farklı olarak onu normal biçimde çağırırsınız (new kullanmadan); ayrıca özel durum için kapanımlardan yararlanabilir.
function createUser(name) {
return {
name,
greet: () => "Hi, I am " + name
};
}
const u = createUser("Ada");
console.log(u.greet()); // "Hi, I am Ada"new Anahtar Sözcüğü Yok
Fabrika işlevleri new ve this kullanımının sakıncalarını önler. İşlevi çağırmanız yeterlidir; karşılığında bir nesne alırsınız.
function point(x, y) {
return { x, y };
}
const p = point(3, 4);
console.log(p.x, p.y); // 3 4Kapanım Yoluyla Özel Durum
Fabrika işlevinde tanımlanan değişkenler özeldir. Döndürülen nesne yöntemleri, tıpkı modül kalıbında olduğu gibi bunları kapsar; ancak çok sayıda örnek üretir.
function createCounter() {
let count = 0; // private
return {
inc: () => ++count,
get: () => count
};
}
const c = createCounter();
c.inc();
console.log(c.get()); // 1Çok Sayıda Bağımsız Örnek
Fabrika işlevine yapılan her çağrı, kendi özel durumuna sahip yeni bir nesne üretir. Tekil bir modülden temel farkı budur.
function createCounter() {
let n = 0;
return { inc: () => ++n };
}
const a = createCounter();
const b = createCounter();
console.log(a.inc(), a.inc()); // 1 2
console.log(b.inc()); // 1Hesaplanan Özellikler
Fabrika işlevleri, değerleri oluşturulma sırasında türetebilir ve girdileri özel tutarak hesaplanan yöntemler sunabilir.
function rectangle(w, h) {
return {
area: () => w * h,
perimeter: () => 2 * (w + h)
};
}
const r = rectangle(3, 4);
console.log(r.area()); // 12
console.log(r.perimeter()); // 14Varsayılan ve İsteğe Bağlı config
Sıradan işlevler oldukları için fabrika işlevleri, yapı çözümlemeyle varsayılanları ve seçenekleri temiz bir biçimde ele alır.
function createButton({ label = "OK", disabled = false } = {}) {
return { label, disabled };
}
console.log(createButton()); // { label: "OK", disabled: false }
console.log(createButton({ label: "Go" })); // { label: "Go", disabled: false }Kalıtım Yerine Birleştirme
Fabrika işlevleri birleştirmeyi tercih eder: Bir sınıf zincirini genişletmek yerine davranışları ekleyerek bir nesne oluşturursunuz.
const canFly = (s) => ({ fly: () => s.name + " flies" });
function createBird(name) {
const self = { name };
return Object.assign(self, canFly(self));
}
console.log(createBird("Robin").fly()); // "Robin flies"Paylaşılan Davranış
Örnek başına kopyalar oluşturmadan yöntemleri örnekler arasında paylaşmak için bunları bir kez tanımlayıp atayın. Ya da kapanımların sağladığı gizlilik yararı karşılığında küçük maliyeti kabul edin.
const behavior = {
describe() { return "id " + this.id; }
};
function createItem(id) {
return Object.assign({ id }, behavior);
}
console.log(createItem(7).describe()); // "id 7"İşlevleri de Döndürme
Fabrika işlevi, daha temiz bir arayüz sağladığında nesne yerine bir işlev döndürebilir; bu işlev yine özel durumu yakalar.
function multiplier(factor) {
return (n) => n * factor;
}
const triple = multiplier(3);
console.log(triple(5)); // 15Fabrika İşlevi ve Oluşturucu
Oluşturucular new, this ve prototip zincirini kullanır. Fabrika işlevleri daha basittir, this hatalarını önler ve kapanımlar yoluyla gerçek gizlilik sağlar; bunun karşılığında yöntemleri bir prototip üzerinde paylaşamaz.
Oluşturma Sırasında Doğrulama
Fabrika işlevleri girdileri doğrulayabilir, döndürmeden önce hata oluşturabilir veya girdileri normalleştirebilir; böylece üretilen her nesnenin geçerli olması garanti edilir.
function createAge(value) {
if (value < 0) throw new Error("age must be >= 0");
return { value };
}
console.log(createAge(30).value); // 30Hızlı Kontrol
Fabrika işlevleri.
Özet
Fabrika işlevleri new veya this kullanmadan nesneler döndürür ve özel durum için kapanımlardan yararlanır. Her çağrı bağımsız bir örnek üretir; hesaplanan özellikleri, varsayılan config değerlerini, birleştirmeyi ve doğrulamayı destekler. Bu işlevler, basitlik ve gerçek gizlilik karşılığında prototip yöntemi paylaşımından vazgeçer ve oluşturuculara kapanımlarla güçlendirilmiş temiz bir alternatif sunar.
Sıkça Sorulan Sorular
“Fabrika İşlevleri” dersi ücretsiz mi?
Evet — “Fabrika İşlevleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 4 dersten oluşur.
“Fabrika İşlevleri” dersinde ne öğreneceğim?
Kapanımlar aracılığıyla özel duruma sahip nesneler oluşturun. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Fabrika İşlevleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Kapanımların Durumu Nasıl Yakaladığı
- Kapanımlarla Özel Değişkenler
- Modül Deseni (IIFE)
- Fabrika İşlevleri