JavaScript ile OOP-7 (Override)

27 Mart 2015
Posted by Çağatay Yıldız
4718 Views

Bu yazımızda Javascript dilinde gerek kütüphanede önceden tanımlanmış gerekse bizim tanımladığımız metotların nasıl override edilebileceğini göreceğiz. JS kütüphane oluşturmak istediğinizde bu özelliği doğru kullandığınız takdirde iş yükünüzü oldukça hafifletecektir. Gelelim kod kısmına. Öncelikle js de tanımlı bir kaç fonksiyonun içeriğini değiştirelim. Örneğin alert isimli fonksiyon bildiğimiz üzere ekrana mesaj yazdırmaktadır.

Ben tanımlı olan bu fonksiyonu override ederek console bölümüne mesaj yazmasını isteyeceğim. Kod satırına gelirsek;

    var alert = function (msg) {
        console.log("test " + msg);
    }
    alert("Çağatay Yıldız")

Gördüğünüz üzere alert isimli bir değişkene fonksiyonu atadım. Mevcut kod satırı çalıştığında browser ın console ekranına “test Çağatay Yıldız” yazacaktır. Şimdide js de bulunan Date isimli metodu override edelim.Bildiğimiz üzere Date metodu bana mevcut tarihi vermekte. Ben bu metodu ezip console ekranına yazı yazmasını istiyorum.

    var Date = function (msg) {
        console.log("test");
    }
    Date("Çağatay Yıldız")

Date isimli metot çalıştığında ekrana “Çağatay Yıldız” yazacaktır. Şimdi ise kendi objemizdeki metodu override edelim. Ninja isimli objem aşağıdaki gibi.

    function Canli()
    {
        this.ad = "Çağatay";
        this.soyad = "Yıldız";
        this.OyunMesaj = function(){
            alert(this.ad + " " + this.soyad + " isimli kullanıcı oyunda") ;
        }
    }

    function Ninja() {
        this.kilicTur = "katana"
    }

    Ninja.prototype = new Canli();

    Ninja.prototype.OyunMesaj = function () {
        alert(this.ad + " isimli NİNJA oyunda")
    }

    nj = new Ninja();
    nj.OyunMesaj();

Yukarıdaki örnekte Ninja isimli class ım Canli dan miras almakta. Normal koşullarda OyunMesaj isimli metot tetiklendiğinde ekrana “Çağatay Yıldız isimli kullanıcı oyunda” yazmasını bekliyoruz. Fakat burada Javascript prototype dan faydalanarak miras aldığım class daki OyunMesaj isimli metodu ezdim. Kod bloğu öalıştırıldığında ekrana “Çağatay Yıldız isimli NİNJA oyunda yazacaktır”. Böylelikle metodumu override etmiş oldum.
Görüldüğü üzere js de override oldukça kolay ve kullanışlı.