Tüm blog yazıları

JavaScript Nesnelerinde Veri Erişimi

JavaScript, günümüzde en çok kullanılan programlama dillerinden biri olarak, verileri saklamak ve yönetmek için birçok farklı yapı sunar. Bu yapılardan biri olan object (nesne), gerçek dünyadaki kavramları tanımlamak için oldukça uygun bir araçtır. Nesneler s

eminbasbayan4 dk okuma
JavaScript Nesnelerinde Veri Erişimi

JavaScript, günümüzde en çok kullanılan programlama dillerinden biri olarak, verileri saklamak ve yönetmek için birçok farklı yapı sunar. Bu yapılardan biri olan object (nesne), gerçek dünyadaki kavramları tanımlamak için oldukça uygun bir araçtır. Nesneler sayesinde birden fazla veriyi bir arada tutabilir ve bu verilere kolaylıkla erişebiliriz.

Bu makalede, JavaScript nesnelerinde veriye nasıl erişileceğini, dot notasyonu ve bracket notasyonu farklarını, dinamik erişim senaryolarını ve anahtarların (key) veri türlerinin nasıl işlendiğini örneklerle açıklayacağız.

Nesnelerle Veri Tutma

JavaScript’te nesneler, birden fazla bilgiyi bir arada tutmak için kullanılır. Bu bilgiler, anahtar-değer (key-value) çiftleri şeklinde yazılır. Her anahtar, karşısındaki değere bir isim gibi davranır. Aşağıdaki örnekte bir araba bilgilerini saklayan bir nesne tanımlanmıştır:

metin
const car = {
  brand: "Toyota",
  model: "Corolla",
  year: 2022
};

Bu nesnede "brand", "model" ve "year" anahtarları aracılığıyla arabanın markası, modeli ve üretim yılı gibi bilgiler tutulur.

Dot (Nokta) Notasyonu ile Erişim

Dot notasyonu, nesnelerden bilgi almak için en çok kullanılan ve en sade yoldur. Sadece nesne adını yazıp, ardından bir nokta koyup almak istediğimiz anahtarı yazmamız yeterlidir:

metin
console.log(car.brand); // "Toyota"
console.log(car.year);  // 2022

Bu yöntemin en büyük avantajı okunabilirliğin yüksek olmasıdır. Ancak yalnızca sabit anahtar adları için uygundur. Eğer erişilmek istenen anahtar adı değişkense, dot notasyonu yetersiz kalır.

Bracket (Köşeli Parantez) Notasyonu ile Erişim

Dot notasyonuna alternatif olan bracket notasyonu ise daha esnektir. Anahtarları string olarak ya da değişken aracılığıyla verebiliriz:

metin
console.log(car["model"]); // "Corolla"

Bu notasyonun en güçlü özelliği, anahtar adını değişken olarak da verebilmemizdir:

metin
const keyName = "year";
console.log(car[keyName]); // 2022

Bu sayede hangi veriye erişileceğini dinamik olarak belirlemek mümkün olur. Örneğin bir kullanıcıdan alınan değeri kullanarak bir nesneden bilgi çekmek istiyorsak, bracket notasyonu tek seçenektir.

Dot ve Bracket Notasyonlarının Karşılaştırması

İki yöntemi karşılaştırmak için aynı nesne üzerinden ilerleyelim:

metin
const student = {
  name: "Zeynep",
  grade: 11,
  school: "Fen Lisesi"
};

Dot Notasyonu:

metin
console.log(student.name);  // "Zeynep"

Bracket Notasyonu (string ile):

metin
console.log(student["school"]); // "Fen Lisesi"

Bracket Notasyonu (değişkenle):

metin
const property = "grade";
console.log(student[property]); // 11

Dot notasyonu sadece sabit anahtar adlarıyla çalışırken, bracket notasyonu hem sabit hem değişkenli kullanımlara açıktır. Ayrıca, bracket notasyonunda tırnak işaretleri zorunludur; dot notasyonunda ise kullanılmaz ve kullanılırsa hata alınır.

Nesne Anahtarlarının Türü Her Zaman String midir?

JavaScript’te nesne içinde tanımladığımız tüm anahtarlar (key), otomatik olarak string (yazı) tipine dönüştürülür. Yani sayı, boolean ya da null gibi değerler kullansanız bile, JavaScript onları arka planda string’e çevirir.

Aşağıdaki örneği inceleyelim:

metin
const results = {
  1: "Başarılı",
  true: "Doğru",
  null: "Bilinmiyor"
};

Bu nesnede 1, true ve null gibi farklı türler kullanılmış gibi gözükse de, aslında JavaScript bunları "1", "true" ve "null" stringlerine dönüştürür.

Bu nedenle aşağıdaki tüm erişimler geçerlidir:

metin
console.log(results[1]);       // "Başarılı"
console.log(results["1"]);     // "Başarılı"
console.log(results[true]);    // "Doğru"
console.log(results["true"]);  // "Doğru"

Bu durum, farklı türlerin anahtar olarak kullanılmasında dikkatli olunması gerektiğini gösterir. Çünkü true ile "true" aynı şeyi ifade eder.

Hatalı Erişim Durumları

Eğer bir nesnede olmayan bir anahtara erişmeye çalışırsak, JavaScript bize "undefined" değerini döner:

metin
console.log(student["email"]); // undefined

Bu, kodun hata vermesini engeller ama bize o anahtarın olmadığını haber eder. Dolayısıyla, bazı durumlarda kontrol mekanizmaları kurmak gerekebilir.

Gerçek Hayatta Dinamik Erişime Örnek

Bir sınav sisteminde öğrencinin notlarına göre bir mesaj göstermek istediğimizi düşünelim. Notları yıllara göre tutan bir nesne tanımlayalım:

metin
const scores = {
  2019: 85,
  2020: 92,
  2021: 78
};

const selectedYear = 2020;
console.log(`Öğrencinin ${selectedYear} yılı notu: ${scores[selectedYear]}`);
// "Öğrencinin 2020 yılı notu: 92"

Burada selectedYear değişkeni kullanıcıdan gelecek bir değer olabilir. Bu senaryoda bracket notasyonu kullanılmazsa, dinamik yapı kurulamaz.

Sonuç

JavaScript nesnelerinde veri alma süreci, küçük farklar gibi görünen ancak büyük anlamlar taşıyan iki temel yöntemle gerçekleştirilir: dot notasyonu ve bracket notasyonu. Her iki yöntemin avantajları ve sınırları vardır:

  • Dot notasyonu, okunması kolay ve sabit veri erişimi için idealdir.
  • Bracket notasyonu, değişkenli (dinamik) erişim için gereklidir ve string dışındaki türleri destekler gibi görünse de tüm anahtarlar string'e çevrilir.

Programlama yaparken hangi yöntemi ne zaman kullanacağınızı bilmek, kodunuzu hem hatasız hem de daha esnek hale getirecektir.

Bu bilgilerle, artık JavaScript nesneleriyle çalışırken hem sabit hem de değişken anahtarlarla veriye nasıl ulaşacağınızı rahatlıkla uygulayabilirsiniz.

JavaScript Classes ile pratik uygulamalar, metotlar arası iletişim ve gerçek dünya kod örnekleri
JavaScript Dersleri9 dk okuma

JavaScript Classes - Pratik Uygulamalar

JavaScript class'ları ile pratik uygulamalara geçin! Metotlar arası iletişimden constructor'da metot çağırmaya, kod tekrarını azaltmaktan gerçek dünya senaryolarına kadar class kullanımının inceliklerini keşfedin. Kendi alışveriş sepeti örneğinizle bilginizi pekiştirin.

Yazıyı oku
JavaScript class yapısını gösteren bir kod örneği, ES6 ile modern nesne oluşturma
JavaScript Dersleri9 dk okuma

JavaScript Classes

ES6 ile JavaScript'e gelen class yapısı sayesinde nesne oluşturmak artık çok daha kolay ve düzenli! Constructor function karmaşasından kurtulup, okunabilir ve yönetilebilir kodlar yazmak isteyenler için modern JavaScript'in temel taşı olan class'ları tüm detaylarıyla keşfedin. Bu rehberle nesne şabl

Yazıyı oku
JavaScript kodunda Constructor Function ve new keyword'ü ile nesne oluşturma örnekleri
JavaScript Dersleri8 dk okuma

Constructor Functions ve new Keyword

Factory Function'ların hafıza israfı sorununa Constructor Function'lar ve new keyword'ü ile son verin! Metotları paylaştırarak JavaScript objelerini daha verimli nasıl oluşturacağınızı, new'in perde arkasında neler yaptığını ve prototype sisteminin gücünü bu rehberde keşfedin.

Yazıyı oku

Çerez tercihlerin

Platformun çalışması için zorunlu çerezler kullanıyoruz. İzin verirsen anonim kullanım verilerini ölçüyoruz. Ayrıntıları incele