Onur Dayıbaşı

CV
none

JS Class Nedir ?

1User.prototype.sayHello=function(){
2 console.log(`My name is ${this.name} and I am ${this.age} years old.`)
3}
4function User(name,age){
5 let user=Object.create(User.prototype);
6 user.name=name;
7 user.age=age;
8 return user;
9}
10const onur=User("Onur",39);
11onur.sayHello();

Şimdi yukarıda yazdığımız daha okunabilir yazmak için class ve new metodlarını kullanalım. Object.create ve return gerek kalmayacak, prototype class bağlamının içerisinde gösterildiğinden aşağıda kodun çok daha okunabilir bir hale geldiğini görebilirsiniz.

1class User{
2 constructor(name,age){
3 this.name=name;
4 this.age=age
5 }
6 sayHello(){
7 console.log(`My name is ${this.name} and I am ${this.age} years old.`)}
8}
9const onur=new User("Onur",39);
10onur.sayHello();

Arkaplanda değişen bir şey yok ama her şey prototype üzerinden çalışıyor. Şimdi kalıtımın(inheritance) nasıl çalıştığına bir bakalım. Aşağıda 2 tane sınıf yazdım. Birisi Shape , ikincisi’de bundan türeyen Rectangle .

"Rectangle extends Shape"

Rectangle hiç bir metodu olmadığı halde atasındaki(parent) sayShape metodunu çalıştırabiliyoruz. Peki nasıl ?. Sorunun cevabını yine arka planda tutulan veri yapısından anlayabilirsiniz Shape içerisinde sayShape Rectangle nasıl proto altındaki proto kopyalandığını görebilirsiniz. Bu prototype chain(zincir) şeklinde fonksiyonları çağırararak kalıtımı sağlayabiliyor javascript. İşin sırrı burda.

"In backend JS Holds Objects"

Referanslar