JavaScript ile OOP-5

1 Temmuz 2014
Posted by Çağatay Yıldız
1348 Views

Javascript ile OOP yazı dizimizin 5. bölümünde geçtiğimiz bölümde değindiğimiz metotları incelemeye devam edeceğiz. Bildiğiniz üzere ilk olarak constructor metodunu incelemiştik.
Şimdi ise hasOwnProperty metodunu inceleyeceğiz.
jsoophasownProperty

hasOwnProperty metodunun anlamı adından da anlaşılacağı üzere objemde o özelliğin olup olmadığını kontrol edip boolean bir değer döndürmekte. Öncelikle bu metodu kullanmadan bu işlemi nasıl yapabileceğimize bakalım. Örneğin bir ninja objesi oluşturdum ve bu objeme kilic isimli bir özellik atadım.

    ninja = new Object()
    ninja.Kilic = "hattori hanzo"

şimdi ise bu objemin içerisinde kilic isimli bir özellik olup olmadığı kontrol eden if bloğunu yazıyorum

    if ('Kilic' in ninja) {
        alert('kilic özelliği var!')
    }

Mantıksal olarak da anlaşılacağı üzere ninja isimli objemde Kilic adında özellik varsa alert çalışacak ve ekrana “kilic özelliği var!” yazacaktır. Gelelim hasOwnProperty metoduyla bunu nasıl yaptığımıza. İşlem oldukça basit.

    if (ninja.hasOwnProperty('Kilic')) {
        alert('test')
    }

Belirttiğimiz üzere hasOwnProperty metodu string olarak değer almakta ve boolen değer döndürmekte. “Kilic” isimli property mevcut olduğu için bu koşulda da alert çalışacaktır.
Property Değiştirme
Objeme belirlediğim özelliği anlık olarak silip başka atamalar gerçekleştirebilirim. Örnek vermek gerekirse Kilic isimli property silip başka bir property atama yapacağım. Yazmam gereken fonksiyon

    function change()
    {
        ninja.YeniKilic = ninja.Kilic
        delete ninja.Kilic
    }

Kilic özelliğini daha önce oluşturmadığım YeniKilic özelliğine atadım ve bir sonraki satırda bu özelliği sildim. Bu fonksiyonu çalıştırıp tekrar if bloğuna soktuğum takdirde alert çalışmayacaktır. Örnek olarak aşağıdaki 2 türlü if bloğuna da girmez ve alert çalışmaz

    change();
    if ('Kilic' in ninja) {
        alert('kilic özelliği var!')
    }

    if (ninja.hasOwnProperty('Kilic')) {
        alert('test')
    }

hasOwnProperty Metodunu Özellik Olarak Kullanmak
Örnek olarak hasOwnProperty metodunu default olarak false dönen bir property tanımladım

    Ninja = new Object()
    Ninja.Ad = "Çağatay"
    Ninja.hasOwnProperty = function () {
        return false;
    }

    if (Ninja.hasOwnProperty("Ad")) {
        alert("test")
    }

bu kod bloğu çalıştığında if içerisinde bulunan alert in çalışmadığını göreceğiz. Ad isimli property erişmek istediğimizde klasik kullanım görüldüğü gibi işe yaramadı. Bu durumda izlememiz gereken 2 yol var.
1.yol

    if (({}).hasOwnProperty.call(Ninja, 'Ad')) {
        alert("test")
    }

call metodu yardımıyla objemin ismini ve property adını belirtiyorum ve bu durumda true dönmekte alert çalışmaktadır

2.yol

    if (Object.prototype.hasOwnProperty.call(Ninja, 'Ad')) {
        alert("test")
    }

Bu yolda ise objenin prototype yararlanarak yine call metodunu kullanıyorum.
Böylelikle hasOwnProperty detaylıca incelemiş olduk. Yazı dizimize objenin diğer metotlarıyla devam edeceğiz.

  • Burcu Yaman

    Merhabalar,
    Youtube’daki videonuzdan ulaştım. Normalde geliştirme için asp.net web-forms kullanmaktayım ancak yavaş yavaş mvc de öğreniyorum.

    Klasik asp.net’de örnek bir haber/blog sitesindeki üst dynamic kategoriler veya son dakika haberleri için masterPage’de verileri çekip gösterirdik ancak 2 haftadır bunu asp.net mvc ile nasıl yapacağımı çözemedim. Bununla ilgili bir paylaşımda bulunursanız sevinirim.