Takip et

JavaScript’te Nesne Oluşturma ve İşleme: Object.assign(), Object.create(), Object.defineProperties()

JavaScript’te Nesne Oluşturma ve İşleme: Object.assign(), Object.create(), Object.defineProperties()

Merhaba! Fatih Soysal olarak, JavaScript’te nesneleri yönetmek için kullanılan üç önemli yönteme, Object.assign(), Object.create() ve Object.defineProperties(), daha yakından bakacağız. Bu yöntemler, nesnelerin nasıl oluşturulduğunu, özelliklerinin nasıl kopyalandığını ve nasıl özelleştirildiğini anlamamızda bize yardımcı olur. Yazının sonunda, bu yöntemleri nasıl kullanabileceğinize dair pratik örnekler ve kod parçacıkları bulacaksınız. Ayrıca, kendi web siteminden daha fazla JavaScript eğitimine ulaşabilirsiniz.

Object.assign(): Nesneleri Birleştirme

Object.assign() yöntemi, bir veya daha fazla kaynak nesnesinin özelliklerini hedef bir nesneye kopyalar. Bu işlem, kaynak nesneleri değiştirmeden yapılır. Örneğin, iki nesneyi birleştirmek istediğinizde bu yöntem oldukça kullanışlıdır. Aynı zamanda, var olan bir nesneyi yeni özelliklerle genişletmek için de kullanılabilir.


const hedefNesne = { a: 1, b: 2 };
const kaynakNesne1 = { c: 3 };
const kaynakNesne2 = { d: 4, e: 5 };

Object.assign(hedefNesne, kaynakNesne1, kaynakNesne2);

console.log(hedefNesne); // Çıktı: { a: 1, b: 2, c: 3, d: 4, e: 5 }

Gördüğünüz gibi, Object.assign() metodu, kaynak nesnelerin tüm özelliklerini hedef nesneye ekledi. Ancak, eğer kaynak nesnelerde aynı isimde özellikler varsa, son eklenen özellik geçerli olur. Bu durum, özelliklerin üzerine yazılmasına neden olabilir.

Object.create(): Prototiplerle Nesne Oluşturma

Object.create() yöntemi, belirtilen bir prototip nesnesinden yeni bir nesne oluşturur. Bu, prototip kalıtımını uygulamanın pratik bir yoludur. Prototip kalıtımı, nesnelerin özelliklerini ve yöntemlerini prototip nesnesinden devralmasını sağlar, bu da kod tekrarını azaltır ve daha düzenli bir kod yapısı oluşturur.


const prototipNesne = {
  yazdir: function() {
    console.log("Merhaba, ben bir prototip nesnesiyim!");
  }
};

const yeniNesne = Object.create(prototipNesne);

yeniNesne.yazdir(); // Çıktı: Merhaba, ben bir prototip nesnesiyim!

Yukarıdaki örnekte, yeniNesne, prototipNesne‘nin yazdir metodunu devraldı. Bu sayede, yeniNesne‘de yazdir metodunu tanımlamamıza gerek kalmadı.

Object.defineProperties(): Nesne Özelliklerini Tanımlama

Object.defineProperties() yöntemi, bir nesnenin özelliklerini ayrıntılı olarak tanımlamamızı sağlar. Her özelliğin tanımlayıcılarını (örneğin, yazma yeteneği, sayılabilirlik ve yapılandırılabilirlik) belirleyebiliriz. Bu yöntem, nesnelerin davranışını daha hassas bir şekilde kontrol etmemizi sağlar.


const nesne = {};

Object.defineProperties(nesne, {
  ad: {
    value: "Fatih",
    writable: false, // Değeri değiştirilemez
    enumerable: true, //  for...in döngüsünde görünür
    configurable: false // Özellik silinemez veya yeniden tanımlanamaz
  },
  soyad: {
    value: "Soysal",
    writable: true,
    enumerable: true,
    configurable: true
  }
});

console.log(nesne.ad); // Çıktı: Fatih

nesne.ad = "Ali"; // Hata vermez, ancak değer değiştirilmez.

console.log(nesne.ad); // Çıktı: Fatih

for (let key in nesne) {
  console.log(key + ": " + nesne[key]); // ad ve soyad yazdırılır
}

delete nesne.ad; // Hata verir çünkü configurable: false

Bu örnekte, ad özelliğinin değiştirilemez, silinemez ve yeniden tanımlanamaz olduğunu belirttik. soyad özelliği ise standart davranışa sahiptir. Object.defineProperties(), nesnelerin özelliklerini detaylı bir şekilde kontrol etmek istediğimiz durumlarda oldukça faydalıdır.

Umarım bu makale, JavaScript’te nesneleri yönetme konusunda size yardımcı olmuştur. Daha fazla bilgi için MDN Object.assign() dökümanına, MDN Object.create() dökümanına ve MDN Object.defineProperties() dökümanına göz atabilirsiniz. Sorularınız için bana ulaşmaktan çekinmeyin!

#Etiketler: JavaScript, Object.assign, Object.create, Object.defineProperties, Nesne Oluşturma, Nesne İşleme, Prototip, Kalıtım, JavaScript Öğretici, Fatih Soysal, Programlama

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

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

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.