0%

Nesne Yönelimli Javascript

Javascriptte, class(sınıf) yoktur. Onun yeri objeler vardır. Bu objeler class olarakta kullanılabilir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// Hayvan sınıfı değişkenleri ve constructor
function Hayvan(yaş){
this.yaş = yaş;
console.log("Yeni hayvan");
}

// Hayvan sınıfı metodları
Hayvan.prototype.büyü = function(){
this.yaş++;
}

// Insan sınıfı değişkenleri ve constructor
function Insan(yaş){
Hayvan.call(this,yaş); // super classın constructorünü çağır
console.log("Yeni Insan");
}

// Kalıtım - prototipleri birleştir
Insan.prototype = Object.create(Hayvan.prototype);
Insan.prototype.constructor = Insan;

// Insanı sınıfının kendine özgü metodları
Insan.prototype.konuş = function(){
console.log("Ben "+this.yaş+" yaşıdayım");
}

// Test
var ahmet = new Insan(16);
ahmet.büyü();
ahmet.konuş();
console.log(ahmet)

Object.create fonksiyonu, bir objeyi kopyalamaz, sadece adresleme yaparak , yeni bir obje oluşturur.(delegasyon) Bunun sayesinde, kalıtım yaparken hafıza kullanımını azaltırız.

this deyimiyle javascriptte, sınıfın kendisi kastedilmez. Bir fonksiyonun hangi obje üzerinde çağrıldığı kastedilir. obje.fonksiyon(); yani o fonksiyonun içinde this kullanıldıysa, noktanın solundaki ilk ifade olan obje ,this’e karşılık düşer. Buda javascriptin önemli farklarında biridir.

Bir fonksiyondan sonra call kullanılırak, o fonksiyonundaki this ifadesi, istediğimiz obje ile yer değiştirebiliriz.

1
2
obje1.fonksiyon(); // burda this=obje1
obje2.fonksiyon.call(obje3); // burda this=obje3