Kamis, 22 Desember 2011

JavaScript Object Oriented Programing (OOP)

Didalam Katagori: Javascript Hari hari antara awal oktober hingga artikel ini ditulis, saya pribadi merasakan hari ini berbolak-balik, sering gak merasa puas dengan metode pemrograman yang saya pake, padahal sering improvisasi, tapi tetap saja belum merasakan kepuasan dengan beberapa framework yang saya  kembangkan sendiri,
Akhirnya tanggal 14 Oktober kemarin, saya iseng2 mencoba mempelajari javascript OOP secara pure, tanpa pake framework JS apapun, karena awalnya saya biasa pake jQuery setelah memutuskan beralih dari prototype .

<script type="text/javascript">
   // Person adalah nama Class beserta constructornya
    function Person(){
       this.name = "Didin Nurdin Ahmadi";
       this.age  = function(a){
        return a;
       }
    }
   
    Person.prototype.School = function(alamat){
        this.Alamat = function(alamat){
        return (alamat) ? alamat : "Margonda";
      }
      return "MI";
    }
   
    Person.prototype.Age = function(){
      return (new Person().age(5));
    }
 </script>
Potongan script diatas adalah implementasi OOP secara simple dengan javascript. Class tersebut bernama class Person, walaupun kelihatannya seperti function biasa, perlu diketahui, javascript mempunyai beberapa cara untuk membuat Class, dan salah satunya adalah dengan cara yang saya pakai.
perintah prototype berguna untuk meregister function/ method/ property ke dalam Class , sehingga penggunaannya adalah
ClassName.prototype.method = function(){
}
Selain dengan sintax prototype, register methode kedalam sebuah object bisa juga dengan menggunakan
this.method = function(){
}
bedanya, penggunaan kata this ini harus ada di dalam scope function.object. misalnya:
Person.prototype.School = function(alamat){
        this.Alamat = function(alamat){
        return (alamat) ? alamat : "Margonda";
      }
      return "MI";
 }
 Pada potongan script diatas, kita tahu bahwa dalam method School ada sebuah function/ methode lagi yang bernalam Alamat(arg);
 Kedudukan methode Alamat() sama dengan School(), walaupun kelihatannya methode Alamat() berada didalam methode School(), itu karena rujukan this kembali ke Object Person (dalam contoh ini). jadi jika ingin mengakses method Alamat(), caranya sama dengan School(). misal:
  man = new Person();
  document.write(man.Alamat() + "<br/>");
  document.write(man.School() + "<br/>");
dari Class Person yang telah dibuat diatas, kita bisa mengetahui methode/property apa saja yang ada didalamnya, kita bisa melihatnya dengan menggunakan funcion for in:
  man = new Person();
 
  for(a in man){
    document.write(a + " = " +man[a] + "<br>");
  }

Tidak ada komentar: