Cara menulis kelas dalam JavaScript telah dibahas sebelumnya. Namun implementasi pribadi tidak dibahas. Baca artikel ini.
Kita tahu bahwa inti implementasi properti pribadi di JS adalah var + penutupan. sebagai berikut
Copy kode kodenya sebagai berikut:
fungsi Orang(n, a){
// publik
ini.nama = n;
// pribadi
var umur = a;
ini.getName = fungsi(){
kembalikan nama ini;
}
ini.getAge = fungsi(){
usia kembali;
}
}
Pengujiannya adalah sebagai berikut. Usia bersifat pribadi dan tidak dapat diperoleh dengan menggunakan operator titik. Sebaliknya, metode getName hanya dapat digunakan.
Copy kode kodenya sebagai berikut:
var p = Orang baru('jack',23);
console.log(hal.usia); // tidak terdefinisi
konsol.log(p.getAge()); // 23
Tidak ada yang mengejutkan dari hal di atas, mari kita gunakan fungsi alat untuk mengimplementasikannya di bawah ini.
Copy kode kodenya sebagai berikut:
/**
* @param {String} nama kelas
* @param {Fungsi} classImp
*/
fungsi $kelas(Namakelas, Imp Kelas){
fungsi kelas(){
if(typeof this.init == "fungsi"){
this.init.apply(ini, argumen);
}
}
classImp.call(clazz.prototipe);
jendela[namakelas] = clazz;
}
menulis kelas
Copy kode kodenya sebagai berikut:
$kelas('Orang', fungsi(){
// Properti pribadi didefinisikan di sini
var umur = '';
ini.init = fungsi(n, a){
//Properti bersama digantung di sini dan diinisialisasi.
ini.nama = n;
// Inisialisasi properti pribadi
umur = a;
};
ini.getName = fungsi(){
kembalikan nama ini;
};
ini.getAge = fungsi(){
usia kembali;
}
});
baru sebuah objek instance
Copy kode kodenya sebagai berikut:
var p = Orang baru('jack',23);
console.log(p.name); // Umum untuk jack, Anda dapat menggunakan operator titik untuk mendapatkannya
console.log(p.age); // undefinisi private tidak dapat diperoleh melalui operator titik
console.log(p.getAge()); // 23 Usia privat hanya dapat diperoleh melalui metode publik getAge