ES6 Sınıfları ve Yapıcı Fonksiyonlarının (Creater Functions) Farkları

Hamdi Yılmaz
2 min readMar 19, 2023

Aşağıdaki örnekte, ES6 sınıfı ve yapıcı fonksiyonu kullanarak aynı Animal sınıfı tanımlanmıştır:

// ES6 Sınıfı
class Animal {
constructor(name, age) {
this.name = name;
this.age = age;
}

speak() {
console.log(`${this.name} is speaking.`);
}
}

// Yapıcı Fonksiyonu
function Animal(name, age) {
this.name = name;
this.age = age;
}

Animal.prototype.speak = function() {
console.log(`${this.name} is speaking.`);
}

// ES6 sınıfı kullanarak Animal nesnesi oluşturma
const animal1 = new Animal("Max", 3);
animal1.speak(); // Max is speaking.

// Yapıcı fonksiyonu kullanarak Animal nesnesi oluşturma
const animal2 = new Animal("Buddy", 5);
animal2.speak(); // Buddy is speaking.

Her iki sınıfın özellikleri ve speak() yöntemleri aynıdır. Ancak, ES6 sınıfı yapıcı fonksiyonuna göre daha az kod yazımı gerektirir.

Ayrıca, ES6 sınıfı yapıcı fonksiyonunun prototipini otomatik olarak oluştururken, yapıcı fonksiyonunda prototip oluşturma işlemi manuel olarak yapılmalıdır.

ES6 sınıflarının oluşturulması, daha açık bir yapıya sahip olduğu için, kodun daha okunaklı ve anlaşılır olmasına yardımcı olabilir. Örneğin, yapıcı fonksiyonları kullanarak bir sınıf tanımlarken, sınıf özellikleri ve yöntemleri arasındaki ayrım net olmayabilir. Ancak, ES6 sınıfları bu ayrımı netleştirir ve daha okunaklı bir kod yazımı sağlar.

Bununla birlikte, ES6 sınıfları, yapıcı fonksiyonlarının aksine prototipleri otomatik olarak oluşturduğu için, bazı durumlarda daha yavaş çalışabilirler. Bu nedenle, performans gerektiren uygulamalarda hala yapıcı fonksiyonları kullanmak tercih edilebilir.

Sonuç olarak, ES6 sınıfları ve yapıcı fonksiyonları arasındaki farklar, özellikle JavaScript programcıları için önemlidir. Hangi yapının kullanılacağı, uygulamanın ihtiyaçlarına ve önceliklerine bağlıdır.

--

--