If you're seeing this message, it means we're having trouble loading external resources on our website.

Bağlandığınız bilgisayar bir web filtresi kullanıyorsa, *.kastatic.org ve *.kasandbox.org adreslerinin engellerini kaldırmayı unutmayın.

Ana içerik

Tekrar: Nesneler

Bu, bu derste nesnelerle ilgili öğrendiklerimizi tekrarıdır.
JavaScript değişkenlerinde saklayabileceğimiz birçok değer türü bulunmaktadır ve bazen bir grup ilişkili değeri birlikte saklamak isteriz: nesneler burada devreye girer!
Nesne, bir grup özelliği bir tek değişkende saklamamıza izin veren bir veri türüdür. Bir nesneyi oluşturmak için, normalde olduğu gibi bir değişken tanımlarız ve sonra anahtar-değer özellik çiftlerini çevrelemek için kıvrımlı ayraç kullanırız:
var objectName = { 
  propertyName: propertyValue,
  propertyName: propertyValue,
  ...
};
Burada Winston'u tanımlayan bir nesne bulabilirsiniz - bu nesnenin iki özelliği vardır, hometown ve hair; özellik değerlerinin ikisi de dizedir:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};
Burada bir kediyi tanımlayan, dört özellikli daha karmaşık bir nesne bulabilirsiniz- age, furColor, likes ve birthday.
var lizzieTheCat = {
  age: 18,
  furColor: "grey",
  likes: ["catnip", "milk"],
  birthday: {"month": 7, "day": 17, year: 1994}
};
Her özelliğin değişik bir veri türü sakladığına dikkat edin- age bir sayı saklar, furColor bir dize, likes bir dizi, ve birthday başka bir nesne saklamaktadır. Nesnelerle ilgili güzel şey (neyse, güzel şeylerden biri) - içlerinde başka nesneler saklayabilmeleridir! Böylece, karmaşık verileri tanımlamak için derin düzeyde iç içe geçmiş nesneler kullanabilirsiniz.
Özellik isimlerinin çevresinde tırnak işaretleriyle tanımlanmış nesneler de görebilirsiniz; şöyle ki:
var aboutWinston = {
  "hometown": "Mountain View, CA",
  "hair": "no"
};
Bu, daha önce tırnak işareti olmadan gördüğümüzle denktir, ama yazması daha uzun sürer. Tırnak işaretlerine ihtiyaç duyduğunuz tek zaman, özellik isminizin içinde boşluk olma durumudur, şuradaki gibi:
var aboutWinston = {
  "his hair": "none"
};
Burada tırnak işareti kullanmalıyız, aksi takdirde JavaScript yorumlayıcısının aklı karışır. Size şöyle bir ipucu vereyim: özellik isimlerinizde boşluk kullanmayın! O zaman, özellik isimlerinin etrafında tırnak işareti kullanmanız gerekmez.

Nesne özelliklerine erişme

Bir nesnenin içine bakıp değişik özelliklerin değerlerini yakalamadıkça, bir nesne faydalı olmaz. Bunu iki şekilde yapabiliriz - ilk olarak "nokta notasyonu" dediğimiz şeyle, ki burada değişkenin ismini, sonra "." ve sonra da özellik ismini yazarız:
var aboutWinston = {
  hometown: "Mountain View, CA",
  hair: "no"
};

text("Winston is from " + aboutWinston.hometown, 100, 100);
text("Winston has " + aboutWinston.hair + " hair", 100, 150);
Ayrıca, "ayraç notasyonu"da kullanabiliriz, bu, dizi öğelerine erişim için kullandığımız yöntemle benzerlik gösterir; önce değişkenin adını yazarız, sonra içinde tırnak içinde yazılmış kare ayracı koyarız:
var hisHometown = aboutWinston["hometown"];
var hisHair = aboutWinston["hair"];
Olmayan bir özelliğe erişmek istersek, "tanımsız" ifadesini görürüz:
text("Winston's life goal is " + aboutWinston.lifeGoal, 100, 150);

Nesne özelliklerini değiştirme

Değişkenlerde başka veri türleri sakladığımızdaki gibi, bir programın herhangi bir aşamasında, nesne özelliklerinin değerlerini, nokta veya ayraç notasyonu kullanarak değiştirebiliriz:
aboutWinston.hair = "curly"; // Winston peruk alır!
Tamamen yeni özellikler de ekleyebiliriz!
aboutWinston.lifeGoal = "teach JavaScript";
Bir özellikle işimiz bittiğinde, onu silebiliriz (ama çoğunlukla, sadece değerini değiştirmemiz yeterli olur):
delete aboutWinston.hair;

Nesne dizileri

Artık hem dizi, hem de nesneleri öğrendiğinize göre, bunları birleştirip nesne dizileri yapabilirsiniz; bunlar, programlarda veri saklamanın son derece yararlı yollarıdır. Örneğin, kedilerden oluşan bir dizi:
var myCats = [
  {name: "Lizzie", 
   age: 18},
  {name: "Daemon",
   age: 1}
];

for (var i = 0; i < myCats.length; i++) {
  var myCat = myCats[i];
  println(myCat.name + ' is ' + myCat.age + ' years old.');
}
Dikkat ederseniz, bir nesne dizisinde yineleme yapmak için, bir sayı veya dize dizisi için yapılanla aynı yolu izleriz, bir for döngüsü kullanırız. Her yinelemenin içinde, geçerli dizi ögesine ayraç notasyonuyla erişiriz; sonra da, bu dizi ögesinin (nesne) özelliklerine nokta notasyonuyla erişiriz.
İşte size programlarda kullanabileceğiniz, başka pratik bir örnek, bir koordinat konumu dizisi:
var positions = [
    {x: 200, y: 100},
    {x: 200, y: 200},
    {x: 200, y: 300}
];

for (var i = 0; i < positions.length; i++) {
    var position = positions[i];
    ellipse(position.x, position.y, 100, 100);
}
Çok güzel, öyle değil mi? Nesneler ilk başta kafa karıştırıcı gelebilir, ama bunları kullanmaya devam edin; sonunda bunların bağımlısı olursunuz ve her şeyi bir nesneye dönüştürmeyi istersiniz!

Tartışmaya katılmak ister misiniz?

Henüz gönderi yok.
İngilizce biliyor musunuz? Khan Academy'nin İngilizce sitesinde neler olduğunu görmek için buraya tıklayın.