JavaScript sınıfları
Sınıflar, constructor ve metotlara sahip nesneleri tanımlamak için sözdizimi sağlar. new bir örnek oluşturur; demo sonunda tea / regular / mint gösterir.
Sınıf ve constructor tanımlama
Bir örnek oluşturulurken constructor çalışır ve örneğin alanlarını başlatır.
class Drink {
constructor(name, size) {
this.name = name;
this.size = size;
}
}
const order = new Drink("tea", "regular");
Constructor değerleri yeni nesneye kaydeder. this geçerli örneği gösterir; new Drink(...) örneği oluşturup constructor'ı çalıştırır.
Örnek metodu ekleme
Metotlar, örneklerin yapabildiği işlemleri tanımlar.
class Drink {
constructor(name, size) { this.name = name; this.size = size; }
label() { return this.name + " / " + this.size; }
}
const order = new Drink("tea", "regular");
console.log(order.label());
order.label() sonucu tea / regular olur. Sınıf metotları prototype üzerinde bulunur ve örnekler arasında paylaşılır.
Bir sınıfı genişletme
extends kalıtım ilişkisini kurar, super(...) üst sınıf constructor'ını çağırır, super.label() ise miras alınan metodu kullanır.
class SpecialDrink extends Drink {
constructor(name, size, extra) { super(name, size); this.extra = extra; }
fullLabel() { return super.label() + " / " + this.extra; }
}
const special = new SpecialDrink("tea", "regular", "mint");
console.log(special.fullLabel());
SpecialDrink, label() metodunu miras alır; extra ve fullLabel() ekler. Çıktı tea / regular / mint olur. Türetilmiş constructor'da this kullanmadan önce super(...) çağrılmalıdır.
Static metotlar ve private alanlar
Static metot sınıfa aittir, örneklerine değil. #secret gibi private bir alan yalnızca sınıf içinde okunabilir.
class Drink {
static kind() { return "drink"; }
#secret = "recipe";
reveal() { return this.#secret; }
}
console.log(Drink.kind());
console.log(new Drink().reveal());
Static metodu Drink.kind() şeklinde çağırın; new Drink().kind() doğru değildir. Sınıf dışından drink.#secret okunamaz.
Sınıfları tek sayfada görme
Bu demo özel örneğin sonucunu belgeye yazar.
<p id="result"></p>
<script>
class Drink { constructor(name,size){this.name=name;this.size=size;} label(){return this.name+" / "+this.size;} }
class SpecialDrink extends Drink { constructor(name,size,extra){super(name,size);this.extra=extra;} fullLabel(){return super.label()+" / "+this.extra;} }
const order=new SpecialDrink("tea","regular","mint");
document.querySelector("#result").textContent=order.fullLabel();
</script>
Sayfa tam olarak tea / regular / mint gösterir. Sınıf bildirimi, bildiriminden önce kullanılamaz; bu temporal dead zone durumudur ve yanıltıcı bir hoisting iddiası değildir.
Sınıflar nesne oluşturmayı ve ortak davranışı düzenler. Dosyaları düzenleyen modüllerden ve doğrudan tek bir nesneye yazılan metottan farklıdır.
📊 Sınıf özellikleri
| Sözdizimi | Amaç | Örnek |
|---|---|---|
constructor(...) |
Yeni örneği başlatmak | constructor(name, size) |
this |
Geçerli örneğe başvurmak | this.name = name |
extends ve super |
Üst sınıf davranışını yeniden kullanmak | class SpecialDrink extends Drink |
static |
Sınıf metodu tanımlamak | Drink.kind() |
Bu tablo, derste kullanılan temel sınıf sözdizimini özetler.
Uygulama
name, size ve label() içeren Drink oluşturun. Sonra extends ile SpecialDrink oluşturup extra ekleyin ve fullLabel() ile tea / regular / mint gösterin. Drink.kind() metodunu da çağırın.
Yaygın hatalar
Örnek metodunu sınıf üzerinde çağırmayın, türetilmiş constructor'da super(...) çağrısını unutmayın ve ondan önce this kullanmayın.
Ana fikir
Constructor alanları başlatır, metotlar prototype üzerinden paylaşılır ve kalıtım davranışı yeniden kullanır.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek