Tags

, ,

Pendahuluan

Pertama-tama, apa itu namespace? Kelemahan sebagian besar programer -atau mungkin cuman gw- adalah kesulitan memberikan definisi :D. Definisi yang singkat adalah ruang/penampung untuk kumpulan identifier. Lebih mudahnya, bayangkan namespace itu seperti folder bagi kumpulan file atau folder.
Kalau sudah ngeh dengan definisinya. pertanyaan berikutnya adalah, apa gunanya? Sama seperti membagi file ke dalam directori-directori. Tujuannya adalah untuk grouping dan untuk mencegah konflik penamaan yang sama. Ilustrasinya seperti ini

  • SD Negeri Satu
    • Guru.xls
    • Siswa.xls
  • SD Negeri Dua
    • Guru.xls
    • Siswa.xls

Kita bisa lihat struktur tersebut memberikan 2 manfaat. Satu, pengelompokkan file guru dan siswa sesuai dengan sekolahnya (grouping). Dua, kita punya 2 file dengan nama yang sama, tetapi karena terletak pada folder yang berbeda maka ini menjadi tidak masalah (mencegah konflik nama).

Implementasi di Javascript

Kalau di PHP kita punya keyword namespace. Sedangkan di Java kita punya package. Lalu bagaimana menerapkan namespace di javascript. Di javascript kita menggunakan sedikit trik yaitu dengan memanfaatkan object.

// definisi namespace
var my_ns = my_ns || {};

Kode ini kita membuat objek my_ns jika belum ada. Selanjutnya setiap objek atau fungsi dibuat sebagai bagian dari objek ini.

my_ns.purchase = {
    list:[],
    create:function(items){
        // do something
    },
    update:function(id,items){
        // do something
    },
}

my_ns.sales = {
    list:[],
    create:function(items){
        // do something
    },
    update:function(id,items){
        // do something
    },
}

// cara memakainya
my_ns.purchase.create(items);
$.each(my_ns.purchase.list,function(){

});

my_ns.sales.create(items);
$.each(my_ns.sales.list,function(){

});

Kita lihat bahwa kita punya fungsi dengan nama yang sama yaitu create(), tetapi karena berada di namespace/objek yang berbeda, keduanya tidak akan konflik. Trik ini bisa digabungkan dengan tutorial enkapsulasi di tulisan sebelumnya.

my_ns.purchase = (function($){
   // some local function and variable
   var pub = {
       //...
   };
   return pub;
})(window.jQuery);

Selamat mencoba.

Advertisements