Javascript tidak mendukung namespace secara asli dan memerlukan solusi.
Saat kita membuat perpustakaan JavaScript, namespace sangat penting. Kita dapat merangkum file JavaScript yang tersebar (*.js) yang membentuk perpustakaan JavaScript di namespace tanpa mendefinisikan fungsi atau kelas global. Misalnya, Person, yang muncul berkali-kali dalam bab ini, dapat dienkapsulasi ke dalam namespace yang sesuai sebagai bagian dari perpustakaan:
Kode 5-13:
Copy kode kodenya sebagai berikut:
varcom = {};
com.anyjava = {};
com.anyjava.Person = fungsi(nama) {
//Anggota pribadi
var _nama = nama;
//Aksesor
ini.getName = fungsi() {
kembalikan _nama;
};
ini.setName = fungsi(nama) {
_nama = nama;
};
};
//prototipe
com.anyjava.Person.prototype = {
makan:fungsi() {
alert(this.getName() + " sedang memakan sesuatu.");
},
tidur:fungsi() {
alert(ini.getName() + " sedang tidur.");
},
berjalan:fungsi() {
alert(ini.getName() + " sedang berjalan.");
}
};
var dirk = new com.anyjava.Person("Dirk");
dirk.makan();
Dari Kode 5-13, kita mendapatkan namespace yang lebih sesuai dengan kebiasaan pengembang Java, dan saat membuat instance objek Person, kita juga harus menentukan jalur spasi perintah kita.
Berikut ini sedikit tip. Jika Anda menggunakan perpustakaan JavaScript yang dikembangkan oleh orang lain dan dengan perencanaan namespace yang relatif lengkap, Anda mungkin bosan menulis namespace yang panjang setiap saat. Misalnya, jika Anda menggunakan perpustakaan JavaScript yang saya kembangkan, di bawah namespace com.anyjava.control.ui, ada banyak kontrol UI tambahan yang ingin Anda gunakan berkali-kali. Dengan menentukan alias namespace, kita dapat menulis kode yang tidak terlalu berulang, seperti yang ditunjukkan pada Kode 5-14, metode lain untuk membuat instance Person dalam Kode 5-13:
Kode 5-14:
Copy kode kodenya sebagai berikut:
var ns = com.anyjava;
var dirk = new ns.Orang("Dirk");
dirk.makan();
Hal terakhir yang akan saya jelaskan adalah masalah yang perlu diperhatikan saat menggunakan namespace. Saat menulis pustaka JavaScript, dalam banyak kasus, pernyataan deklarasi namespace dapat muncul di beberapa lokasi dalam file JavaScript secara bersamaan, atau di beberapa file JavaScript, namun fitur bahasa JavaScript adalah bahwa variabel yang terakhir dideklarasikan akan menimpa variabel yang dideklarasikan sebelumnya Variabel dengan nama yang sama mengharuskan kita untuk memperhatikan masalah deklarasi berulang. Artinya, setiap kali kita mendeklarasikan objek namespace, disarankan untuk menentukan terlebih dahulu apakah objek namespace tersebut sudah ada, seperti yang ditunjukkan pada Kode 5-. 15:
Kode 5-15:
Copy kode kodenya sebagai berikut:
if (typeof com.anyjava == "tidak terdefinisi") var com.anyjava = {};
Dengan cara ini kita dapat memastikan bahwa objek "com.anyjava" hanya dideklarasikan satu kali.