JavaScript’te “class” Anahtar Kelimesinin Kullanımı

JavaScript’te class anahtar kelimesi, ECMAScript 2015 (ES6) ile tanıtılan ve kendi özelliklerine ve yöntemlerine sahip yeni bir nesne türü tanımlamak için kullanılan nispeten yeni bir özelliktir.

JavaScript’te “class” Anahtar Kelimesi

JavaScript, özellikle diğer programlama dillerinde sınıf tabanlı deneyimi olan geliştiriciler için tanıdık bir yapı sağlamak amacıyla ECMAScript 6 (ES6) ile birlikte sınıf tabanlı programlama özellikleri sunmaya başlamıştır.

Belirtmek isterim ki bu yapı, JavaScript’in altında yatan prototip tabanlı miras modelini değiştirmez. Bir nevi, dildeki mevcut prototip tabanlı miras modelini anlaşılır kılmak adına ortaya çıkmış söz dizimsel şekerlerden (Syntactic sugar) biridir.

Yani JavaScript’teki “class” anahtar kelimesi, JavaScript’in prototip tabanlı yapısına bir alternatif olması için değil bu yapıyı daha okunabilir ve anlaşılır kılan bir söz dizimi sunmak için dile kazandırılmıştır.

Aşağıdaki örneği inceleyelim ve bunu “class” anahtar kelimesi kullanarak nasıl diğer dillerdekine benzer bir hüviyete kavuşturacağımızı gösterelim:

Bu yapıda, Kisi isimli bir fonksiyon oluşturduk ve bu fonksiyonu bir constructor olarak kullandık. Yani new anahtar kelimesi ile bu fonksiyondan yeni bir nesne örnekleyebiliyoruz. Bu nesnenin metodları ise prototype aracılığıyla eklenir. Bu, JavaScript’te uzun yıllar boyunca nesne yönelimli programlama yapısını uygulamak için kullanılan yöntemdir. Ancak ES6 ile gelen class yapısı, bu işlemleri daha anlaşılır, düzenli ve tanıdık bir şekilde yapabilmemizi sağlamıştır.

Bu yapıyla tanıştıktan sonra, bu kod parçasının aslında JavaScript’in altında yatan prototip tabanlı miras modelini değiştirmediğini umarım fark etmişsinizdir. Söz konusu class yapısı, dildeki mevcut prototip tabanlı miras modelini daha anlaşılır kılmak adına eklenen “syntactic sugar” olarak kabul edilmelidir.

Bu yapıda Rectangle adında bir fonksiyon tanımlıyoruz ve bu fonksiyonu bir constructor (yapıcı) olarak kullanıyoruz. Bu fonksiyondan türettiğimiz nesnelerin ortak metodları olan area fonksiyonunu ise Rectangle fonksiyonunun prototype‘ına ekliyoruz. Bu sayede tüm Rectangle nesneleri bu metodu kullanabilir hale geliyor. Nihayetinde new anahtar kelimesi kullanılarak Rectangle‘ın yeni bir örneği oluşturulduğunda, constructor metodu otomatik olarak belirtilen argümanlarla çağrılır ve yeni objeyi başlatır.

“extends” ile Miras

JavaScript’teki “class” anahtar kelimesi, extends anahtar kelimesi aracılığıyla mirası da sağlar. Böylece bir üst sınıftan miras alan ve kendi özelliklerine ve metotlarına sahip olabilen bir alt sınıfı tanımlayabiliriz. Örneğin:

Yukarıdaki örneğimizde ise, Square sınıfımız Rectangle‘ın alt sınıfıdır ve constructor ve alan metotlarını miras alır. Square‘ın constructor‘ında Rectangle‘ın constructor‘ını çağırmak için super anahtar kelimesi kullanmıştır.

Genel olarak, JavaScript’teki “class” anahtar kelimesi, nesne yönelimli programlama için daha temiz ve daha sezgisel bir söz dizimi sağlar, ancak bunun hala prototipler ve prototip tabanlı miras üzerine inşa edildiğini unutmamalıyız.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu