Pada artikel sebelumnya, saya menulis fungsi alat $class, dan artikel ini akan memperbaikinya sebagai berikut. Terapkan fungsi-fungsi berikut
1. Warisan
2. Ketika subkelas mewarisi dari kelas induk, subkelas tersebut tidak mewarisi atribut privat dari kelas induk.
Copy kode kodenya sebagai berikut:
/**
* @param {String} nama kelas
* @param {String/Fungsi} superCls
* @param {Fungsi} classImp
*/
fungsi $kelas(Namakelas, superCls, classImp){
if(superCls === '') superCls = Objek;
fungsi kelas(){
if(typeof this.init == "fungsi"){
this.init.apply(ini, argumen);
}
}
var p = clazz.prototipe = superCls baru();
var _super = superCls.prototipe;
jendela[namakelas] = clazz;
classImp.berlaku(p, [_super]);
}
Pertama tulis kelas induk
Copy kode kodenya sebagai berikut:
/**
* Orang Kelas Induk
*/
$kelas('Orang','',fungsi(){
//usia atribut pribadi
berbagai usia;
ini.init = fungsi(n, a){
//Nama atribut publik
ini.nama = n;
// Inisialisasi properti pribadi
umur = a;
};
ini.getName = fungsi(){
kembalikan nama ini;
};
this.setName = fungsi(nama){
ini.nama = nama;
}
ini.getAge = fungsi(){
usia kembali;
};
ini.setUmur = fungsi(a){
umur = a;
};
});
Tulis subkelas, warisi dari Person
Copy kode kodenya sebagai berikut:
$kelas("Manusia",Orang, fungsi(supr){
sekolah var;
ini.init = fungsi(n, a, s){
supr.init.apply(ini, [n,a]);
sekolah = s;
}
ini.getSekolah = fungsi(){
kembali ke sekolah;
};
this.setSchool = fungsi(s){
sekolah = s;
};
});
baru sebuah instance subkelas
Copy kode kodenya sebagai berikut:
var m = Manusia baru('tom', 25, 'pku');
console.log(m.name); // Tom mewarisi nama atribut umum dari kelas induk dan bisa langsung menggunakan operator titik untuk mendapatkannya.
console.log(m.age); // undefinisi Usia properti pribadi kelas induk tidak dapat diperoleh secara langsung menggunakan operator titik
console.log(m.getAge()); // 25 Atribut privat age dapat diperoleh melalui metode publik getAge dari kelas induk
console.log(m.school); // undefinisi Properti pribadi manusia masih tidak dapat diperoleh melalui operator titik
console.log(m.getSchool()); // pku memperoleh sekolah atribut privat melalui metode getSchool()