En el artículo anterior, escribí una función de herramienta $class, y este artículo la mejorará de la siguiente manera. Implementar las siguientes funciones.
1. Herencia
2. Cuando una subclase hereda de una clase principal, no hereda los atributos privados de la clase principal.
Copie el código de código de la siguiente manera:
/**
* @param {String} nombre de clase
* @param {Cadena/Función} superCls
* @param {Función} classImp
*/
función $clase(nombreclase, superCls, claseImp){
if(superCls === '') superCls = Objeto;
funciónclazz(){
if(tipo de esto.init == "función"){
this.init.apply(esto, argumentos);
}
}
var p = clazz.prototype = new superCls();
var _super = superCls.prototype;
ventana[nombredeclase] = clazz;
classImp.apply(p, [_super]);
}
Primero escribe una clase para padres.
Copie el código de código de la siguiente manera:
/**
* Persona de clase padre
*/
$clase('Persona','',función(){
// Edad del atributo privado
edad variable;
this.init = función(n, a){
//Nombre del atributo público
este.nombre = n;
// Inicialización de propiedad privada
edad = a;
};
this.getName = función(){
devolver este.nombre;
};
this.setName = función(nombre){
this.nombre = nombre;
}
this.getAge = función(){
edad de retorno;
};
this.setAge = función(a){
edad = a;
};
});
Escribe una subclase, hereda de Persona.
Copie el código de código de la siguiente manera:
$clase("Hombre",Persona, función(supr){
escuela var;
this.init = función(n, a, s){
supr.init.apply(esto, [n,a]);
escuela = s;
}
this.getSchool = función(){
regresar a la escuela;
};
this.setSchool = función(es){
escuela = s;
};
});
nueva instancia de una subclase
Copie el código de código de la siguiente manera:
var m = nuevo Hombre('tom', 25, 'pku');
console.log(m.name); // Tom hereda el nombre del atributo común de la clase principal y puede usar directamente el operador de punto para obtenerlo.
console.log(m.age); // indefinido La edad de la propiedad privada de la clase principal no se puede obtener directamente utilizando el operador de punto
console.log(m.getAge()); // 25 La edad del atributo privado se puede obtener a través del método público getAge de la clase principal.
console.log(m.school); // las propiedades privadas del hombre indefinidas aún no se pueden obtener a través del operador punto
console.log(m.getSchool()); // pku obtiene el atributo privado escuela a través del método getSchool()