Fonksiyonlar

* Değer atanmayan fonksiyon parametreleri undefined değerini alırlar.

* Argümanlar sadece tanımlandıkları fonksiyonda çalıştırılabilirler.Global blokta tanımlanan değişkenlere fonksiyonlardan erişilebilir.

* Farklı fonksiyon tanımlama şekilleri vardır örn ;

 

=>   function islem() { }

=>   var islem = function (a, b) {
            return a + b;
        }

Argümanlar

* arguments" değeri, Fonksiyonların parametre değerlerine sıralı olarak ulaşmamızı sağlayan bir dizidir.

 

 var islem = function (a, b) {
            return arguments[0] + arguments[1];
        }

 document.write(islem(3, 5));
 //sonuç : 8


Fonksiyonlar için method ve değişken tanımlamak

 

 var islem = function () {

            this.aciklama = "Bu bir fonk. açıklamasıdır";
            this.toplama = function (a, b) {
                return a + b;
            }
            this.cikarma = function (c, d) {
                return c - d;
            }

        }

        var islemler = new islem();
        var x = islemler.toplama(10, 20);
        var y = islemler.cikarma(20, 12);

        document.writeln("toplama sonucu : " + x); // sonuç : 30
        document.writeln("çikarma sonucu :" + y);  // sonuç : 8
document.writeln("açiklama : " + islemler.aciklama); // çıktı : Bu bir fonk. açıklamasıdır

 

prototype kullanımı

Oluşturmuş olduğumuz işlem objesine yeni bir method eklememiz gerektiğini düşünelim ; şöyle bir kod yazabiliriz ;

   islem.bolme = function (a, b) {
            return a / b;
         }

     

islem.bolme(10, 2); diyerek ben bu eklediğim methodu kullanabilirim ancak bu yeni yazdığım methodun içerisinde islem objesine ait değişken ve methodlara erişim sağlayamam! ayrıca islem objesinden yeni bir örnek oluşturduğumda , bu yeni eklediğim methoda erişimde sağlayamam.Açıkcası ; bir objeye prototype özelliği ile eklediğin her yeni özellik ve method , o nesnenin tüm instance'ları (kopyaları) içinde geçerli olmaktadır.


islem.prototype.bolme = function (c, d) {
            return (c / d) + " aciklama " + this.aciklama;
        }

var islemler = new islem();
document.write(islemler.bolme(10, 2));

 

call ile kalıtım

Fonksiyonları birbiri üzerine inşa etmek yani bir bakıma oop'deki inheritance'i js'de uygulamak için kullanılır.


        var insan = function (ad, soyad, cinsiyet, uyruk) {
            this.ad = ad;
            this.soyad = soyad;
            this.cinsiyet = cinsiyet;
            this.uyruk = uyruk;

        }
        insan.prototype.kos = function (kosmaEfekti) {
            document.write(kosmaEfekti);
        }

        var calisan = function (ad, soyad, cinsiyet, uyruk, maas) {
            this.maas = maas;
            insan.call(this, ad, soyad, cinsiyet, uyruk);
            // this anah.kelimesi parametrelerin calisan fonksiyonundan gönderildiğini ifade ediyor.
        }
        calisan.prototype = insan.prototype;

        var ogretmen = function (ad, soyad, cinsiyet, uyruk, maas, ogrenciSayisi) {
            this.ogrenciSayisi = ogrenciSayisi;
            calisan.call(this, ad, soyad, cinsiyet, uyruk, maas);
        }
        ogretmen.prototype = calisan.prototype;

        var ahmet = new insan("ahmet""çalik""erkek""tc");     
        var gaye = new calisan("gaye""portakal""kadın""tc""2000");     
        var yurdagul = new ogretmen("yurdagul""or""kadın""tc""1700""30");
       

        document.write(ahmet.ad + " " + ahmet.soyad + " " + ahmet.cinsiyet + " " + ahmet.uyruk);
        ahmet.kos(" dambili dambili");
        document.write("<br/>");

        document.write(gaye.ad + " " + gaye.soyad + " " + gaye.cinsiyet + " " + gaye.uyruk + " " + gaye.maas);
        gaye.kos(" pompili pompili");
        document.write("<br/>");

        document.write(yurdagul.ad + " " + yurdagul.soyad + " " + yurdagul.cinsiyet +
" " + yurdagul.uyruk + " " + yurdagul.maas + " " + yurdagul.ogrenciSayisi);
        yurdagul.kos(" tumbala tumbala");


prototype'i insan objesine yazdığım methodu , diğer oluşturduğum sınıflarında kullanabilmesi için kullandım,
bir prototype methodunu veya değişkenini başka bir objenin prototype'ine aktararak ,2 obje tarafından paylaşılmasını kolaylıkla sağlayabiliriz.