- Konu sahibi
- #1
JavaScript’te object (nesne), bilgileri anahtar-değer çiftleri halinde tutan ve bu bilgilerle çalışan metotları da içerebilen bir veri yapısıdır. Örneğin bir kullanıcıyı
Nesne özelliklerinin anahtarları metin veya Symbol olabilir; sayısal görünen özellik adları da normal nesnede metne dönüştürülür. Her özellik bir anahtara ve karşılık gelen değere sahiptir. Değer; metin, sayı, doğru-yanlış, dizi, başka bir nesne veya fonksiyon olabilir. Nesne içindeki fonksiyona genellikle metot denir.
Nesne oluşturmanın en yaygın yolu süslü parantez kullanmaktır:
Bu kodun beklenen çıktısı sırasıyla
Anahtarın adı önceden biliniyorsa nokta gösterimi daha okunaklıdır. Anahtar bir değişkende tutuluyorsa köşeli parantez kullanılır:
Bu örnekte mevcut
Aşağıdaki ayrım, hangi erişim biçimini seçmeniz gerektiğini gösterir:
Nesneyi uygulamada kullanırken şu sırayı izlemek yeterlidir:
Bir nesneyi JSON metniyle karıştırmayın. JSON, veri aktarımında kullanılan metin biçimidir; JavaScript object ise doğrudan kod içinde kullanılan değerdir. JSON metnini temsil ettiği JavaScript değerine çevirmek için
Bir diğer hata, iç içe nesne özelliğine kontrol etmeden erişmektir. Örneğin
Array de bir JavaScript nesnesidir, ancak sıralı koleksiyon davranışına ve dizi metotlarına sahiptir. Dizi denetiminde Array.isArray kullanın; yalnız typeof sonucunun object olması normal nesneyle diziyi ayırmaz. Object ise adlandırılmış özellikleri tutar. Bir kullanıcı listesi için array, tek bir kullanıcının ayrıntıları için object daha uygundur.
Yüzeysel bir kopya için
ad, yas ve aktif özellikleriyle tek bir değer içinde saklayabilirsiniz. Nesneler, ilişkili verileri düzenlemek ve bu verilere anlamlı adlarla erişmek için kullanılır.JavaScript object nasıl çalışır?
Nesne özelliklerinin anahtarları metin veya Symbol olabilir; sayısal görünen özellik adları da normal nesnede metne dönüştürülür. Her özellik bir anahtara ve karşılık gelen değere sahiptir. Değer; metin, sayı, doğru-yanlış, dizi, başka bir nesne veya fonksiyon olabilir. Nesne içindeki fonksiyona genellikle metot denir.
Nesne oluşturmanın en yaygın yolu süslü parantez kullanmaktır:
Kod:
const kullanici = {
ad: "Ayse",
yas: 28,
roller: ["editor", "uye"],
aktif: true,
tanit: function () {
return this.ad + " sisteme giris yapti.";
}
};
console.log(kullanici.ad);
console.log(kullanici["roller"][0]);
console.log(kullanici.tanit());
Bu kodun beklenen çıktısı sırasıyla
Ayse, editor ve Ayse sisteme giris yapti. olur. Nokta gösterimiyle kullanici.ad okunabilir; köşeli parantez gösterimiyle kullanici["ad"] aynı özelliğe erişir. this, metot çağrısı nesne üzerinden yapıldığında o nesneyi ifade eder.Özelliğe erişim ve değişiklik
Anahtarın adı önceden biliniyorsa nokta gösterimi daha okunaklıdır. Anahtar bir değişkende tutuluyorsa köşeli parantez kullanılır:
Kod:
const alan = "ad";
console.log(kullanici[alan]);
kullanici.yas = 29;
kullanici.sehir = "Ankara";
delete kullanici.aktif;
Bu örnekte mevcut
yas değiştirilir, yeni sehir özelliği eklenir ve aktif silinir. Olmayan bir özelliği okumak hata fırlatmak yerine genellikle undefined döndürür. Ancak olmayan özelliğin altına erişmeye çalışmak hata oluşturabilir; bu nedenle iç içe verilerde değerin gerçekten var olduğunu kontrol etmek gerekir.Aşağıdaki ayrım, hangi erişim biçimini seçmeniz gerektiğini gösterir:
| Durum | Tercih | Örnek |
|---|---|---|
| Anahtar sabit ve geçerli bir JavaScript adı | Nokta gösterimi | kullanici.ad |
| Anahtar değişkende tutuluyor | Köşeli parantez | kullanici[alan] |
| Anahtar boşluk veya özel karakter içeriyor | Köşeli parantez | veri["telefon numarasi"] |
| Özellik nesnede veya prototipte var mı? | in işleci | "ad" in kullanici |
| Yalnız nesnenin kendi özelliği mi? | Object.hasOwn | Object.hasOwn(kullanici, "ad") |
Nesneyi uygulamada kullanırken şu sırayı izlemek yeterlidir:
- Birlikte anlam taşıyan verileri belirleyin; örneğin kullanıcıya ait bilgileri
kullanicinesnesinde toplayın. - Her bilgi için açıklayıcı ve tutarlı anahtar adları seçin.
- Sabit anahtarlar için nokta gösterimini, dinamik anahtarlar için köşeli parantez gösterimini kullanın.
- Nesneyi fonksiyona gönderin veya bir dizinin elemanı olarak saklayın.
- Gerekirse
Object.keys(),Object.values()veyaObject.entries()ile anahtarları ve değerleri dolaşın.
Sık yapılan hatalar
Bir nesneyi JSON metniyle karıştırmayın. JSON, veri aktarımında kullanılan metin biçimidir; JavaScript object ise doğrudan kod içinde kullanılan değerdir. JSON metnini temsil ettiği JavaScript değerine çevirmek için
JSON.parse(), nesneyi JSON metnine çevirmek için JSON.stringify() kullanılır.Bir diğer hata, iç içe nesne özelliğine kontrol etmeden erişmektir. Örneğin
kullanici.adres.sehir ifadesinde adres yoksa hata alabilirsiniz. Değerin bulunmayabileceği durumda isteğe bağlı zincirleme kullanabilirsiniz: kullanici.adres?.sehir. Ayrıca bir nesneyi const ile tanımlamak, içindeki özelliklerin değiştirilemeyeceği anlamına gelmez; const değişkenin başka bir nesneyle yeniden atanmasını engeller.Sık sorulan sorular
Object ile array arasındaki fark nedir?
Array de bir JavaScript nesnesidir, ancak sıralı koleksiyon davranışına ve dizi metotlarına sahiptir. Dizi denetiminde Array.isArray kullanın; yalnız typeof sonucunun object olması normal nesneyle diziyi ayırmaz. Object ise adlandırılmış özellikleri tutar. Bir kullanıcı listesi için array, tek bir kullanıcının ayrıntıları için object daha uygundur.
Bir object nasıl kopyalanır?
Yüzeysel bir kopya için
const kopya = { ...kullanici }; kullanılabilir. İç içe nesneler varsa bu yöntem alt nesneleri bağımsız kopyalamaz; değişikliklerin birbirini etkilememesi gerekiyorsa yapının derinliğine uygun ayrı bir kopyalama yöntemi seçilmelidir.