Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.
0

Nesne ve (this)

Merhabalar

Sorum JavaScript-te nesne ile ileilgilidir.

Kodu 1. ornekteki gibi değilde 2. örnekteki gibi yazarsam hata olur mu ve eğer hata olmazsa o zaman kod neden 2. örnekteki gibi değilde 1. örnekteki gibi öğretiliyor?

ÖRNEK: 1

let araba = {
       renk: "kirmizi",
       marka: "bmw",
       renkMarka: function () {
              return this.renk + this.marka;
       }
};


ÖRNEK: 2 (this yerine nesnenin adını kullandim)


let araba = {
       renk: "kirmizi",
       marka: "bmw",
       renkMarka: function () {
              return araba .renk + araba.marka;
       }
};

NOT: İkinci örnegi yaptım kod çalıştı ama bazen bazı kod çalışa bile yine de sistemte açık yaratır. İşte ben onun nedenini bilmek istiyorum.

1 Cevap

0
Tek bir değişkenle izlenen tek bir nesne için farkezmez.

Eğer aynı özellik ve metodlara sahip bir çok nesne kullanacaksanız her biri için ayrı ayrı araba.renk gibi değişken adını yazmak hataya sebep olabilir.

    let araba1 = {
           renk: "kirmizi",
           marka: "bmw",
           renkMarka: function () {
                  return araba1.renk + araba1.marka;
           }
    };
    let araba2 = {
           renk: "kirmizi",
           marka: "aaa",
           renkMarka: function () {
                  return araba2.renk + araba2.marka;
           }
    };
İsmi olmadan aynı tür nesneleri bir dizi veya nesne içinde de kullanabilirsiniz. Bu durumda dizide nesnelerin değişken adları olmayacak, nesnelerin içinde ise adları tek tek izlemek gereksiz olacaktır. Mecburen this kullanırsınız.

	var arabalar = [
		   {
			   renk: "kirmizi",
			   marka: "bmw",
			   renkMarka: function () {
					  return this.renk + this.marka;
			   }
		   },
		   {
			   renk: "yeşil",
			   marka: "fiat",
			   renkMarka: function () {
					  return this.renk + this.marka;
			   }
		   },
		   {
			   renk: "mavi",
			   marka: "toyota",
			   renkMarka: function () {
					  return this.renk + this.marka;
			   }
		   },
		   {
			   renk: "sari",
			   marka: "hyundai",
			   renkMarka: function () {
					  return this.renk + this.marka;
			   }
		   }
		];
		
	console.log(arabalar[0].renkMarka());
	console.log(arabalar[1].renkMarka());
	console.log(arabalar[2].renkMarka());
	console.log(arabalar[3].renkMarka());

Object literal yöntemiyle tanımlanmış bir nesnenin Object.create metoduyla örneğini oluşturabilirsiniz / çoğaltabilirsiniz.. Bu durumda this kullanmak zorundasınız.

let araba = {
    renk: "kirmizi",
    marka: "bmw",
    renkMarka: function () {
        return this.renk + this.marka;
    }
};

var araba3 = Object.create(araba);

araba3.renk = "Yeşil";
araba3.marka = "Honda";

console.log(araba.renkMarka());
console.log(araba3.renkMarka());

Başka sebepler de sayılabilir.

this kullanmak her durumda daha iyidir. Her zaman this kullanın.

Not: Fonksiyonlarda return olması gerekir. Soruyu düzenlediğimde ekledim.


Cevaplayan: 07.07.23 18:34
cevapsitesi
102,035p 16ü