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.

Yazılım Soruları

0

JavaScriptde consturctorsuz super neden calismiyor?

class otomobil {
  ad(tekersayisi, koltuksayisi) {
    this.tekersayisi = tekersayisi;
    this.koltuksayisi = koltuksayisi;
  }
 
}
 
class SporAraba extends Otomobil {
  ikincifonk(tekersayisi, koltuksayisi, beygirgucu) {
    super(tekersayisi, koltuksayisi);
    this.beygirgucu = beygirgucu;
  }
  
 
}
 
//let araba = new Otomobil().ad("4", "5");
//document.write(araba.tekersayisi+'<br>');
new otomobil().ad("4", "5");
let sporAraba = new SporAraba().ikincifonk("4", "5", "300");
document.write(sporAraba.tekersayisi);

Soran:06.06.21 22:03
misafir  

1 Cevap

0
super'in super(1, 2) gibi fonksiyon olarak kullanımı zaten türetildiği sınıfın yapılandırıcısını (constructor) çağırmak içindir. Yapılandırıcısı yoksa çalışmaz.

Eğer türedildiği sınıfın bir fonksiyonuna erişmek isterseniz super.fonksiyonAdı(...) kullanımı çalışır.

Verdiğiniz kodda bazı büyük küçük harf hataları ve bir de hatalı fonksiyon kullanımı vardı. Altta düzeltilmiş örnek var.


<html>
<head>
<meta charset="utf-8" />
</head>
<body>

<script>
class Otomobil {
  ad(tekersayisi, koltuksayisi) {
    this.tekersayisi = tekersayisi;
    this.koltuksayisi = koltuksayisi;
  }
 
}
 
class SporAraba extends Otomobil {
  ikincifonk(tekersayisi, koltuksayisi, beygirgucu) {
	// super yerine super.ad kullanıldı.
    super.ad(tekersayisi, koltuksayisi);
    this.beygirgucu = beygirgucu;
  }
}
 
new Otomobil().ad("4", "5");

// Alttakinde ikincifonk fonksiyonundan dönen değeri (dönen olmadığından undefined)
// değişkene atadığından sporAraba değişkeninin değeri undefined olur.
// let sporAraba = new SporAraba().ikincifonk("4", "5", "300");
let sporAraba = new SporAraba();
sporAraba.ikincifonk("4", "5", "300");
document.write(sporAraba.tekersayisi);
</script>


</body>
</html>


Cevaplayan: 13.06.21 22:44
cevapsitesi
102,034p 15ü