javascript prototype basit örnek
Javascirptte object oriented programlama yapılabilir. Ancak javascirpt diğer diller gibi (c,java vs) o diller class tabanlı. Class olusturup objelerimizi bunlardan üretiriz. Javascirpt ise protetype tabanlı bir dildir. Js de classlar bulunmaz ancak es6 daki class yazımları js class varmıs gibi düşündürebilir. Es6 Da class gibi yazacağız ama arka tarafta bunlar prototype cevriliyor.
function Employee(name,age) { this.name = name; this.age = age; this.showInfos = function () { console.log("bilgiler gösteriliyor"); } } const emp1 = new Employee("Caylak",20); console.log(emp1);
burada kendi içinde proto type özelliği var. Ona bakarsak içinde Emoloyee constructoru var. Ona bakarsanız obje prototype ını görürsünüz.
Employee içinde neden bir tane daha proto type var ? Bunun sebebi şu örneğin
console.log(emp1.toString())
yazdık çıktısı
bu toStingi kendimiz yazmadık nerden geldi ?Object prototypindan geldi. YAni alsında zincirleme obje olusturmus oluyor. Obje olarak yazılan metotları miras olarak alıyoruz. O yüzden aktarılıyor. Prototype objeler arasında kalıtım yapmamızı sağlar. Her bir obje javascirpt objesinden miras alıyor.
toscripti arıyor bulamazsa bir üstüne gidiyor en son nerede objede buluyor onu çalıştırıyor. Olmayan birşeyi ararsak bakın ne olacak
console.log(emp1.deneme())
hiçbirinde bulamadığından hata verdi.
Şimdi de deneme metodunu kendi objemizde ekleyim
function Employee(name,age) { this.name = name; this.age = age; this.showInfos = function () { console.log("bilgiler gösteriliyor"); } this.deneme = function () { console.log("bu bir employee objesidir") } } const emp1 = new Employee("Caylak",20); console.log(emp1); console.log(emp1.deneme());
Bu sefer deneme kendi içinde oldugu için direk onu yazdırdı. Olmasaydı gezerek bir sonrakine bakacaktı
Bir başka örnek
------------
function Employee(name,age) { this.name= name; this.age = age; this.showInfos = function () { console.log("isim : "+ this.name + "Yaş : "+ this.age) } } const empt1 = new Employee("ali",25); const empt2 = new Employee("veli",25); console.log(empt1); console.log(empt2);
objemize baktığımızda kendi içinde showInfos metodu var. Aslında buraya yazdığımızda dez ajantajı var. 2 tane obje olusturduk. Bunu constructerda yazdığımızda programda 2 tane kopyası oldu. Birbirinin kopyası oldu gereksiz gere işkal etti. Bu basit o yüzden zararsız ama bunu daha doğru yazabiliriz.
Metod hepsinde geçerli olacağından prototype içinde yazarsak hemsi zaten protetype sahip oradan kullanırlar. Bütün objeler aynı prototype bağlı olduğundan işimizi görür. Yazalım o zaman
Biz employee’nin prototype ulaşmak istiyoruz onuda söyle yazıyoruz
function Employee(name,age) { this.name= name; this.age = age; } Employee.prototype.showInfos = function () { console.log("isim: "+ this.name+ " Yaş :"+ this.age) }; const empt1 = new Employee("ali",25); const empt2 = new Employee("veli",25); console.log(empt1); console.log(empt2); empt2.showInfos();
Tüm objeler prototype sahip oldugundan hepsi bu özelliğe sahip olacaktır.







