Cada función tiene un atributo prototipo, llamado prototipo. Cada objeto también tiene un prototipo, al que se puede acceder a través de __proto__ en Firefox/Safari/Chrome/Opera. No se proporciona ninguna interfaz relevante en IE6/7/8.
Copie el código de código de la siguiente manera:
función Persona(){
this.method1 = función(){}
}
Persona.prototipo.método2 = función(){}
función Hombre(){}
Man.prototype = nueva Persona();
Man.prototipo.m1 = función(){}
Man.prototipo.m2 = función(){}
var m = nuevo Hombre();
para(var a en m.__proto__){
alerta(a);
}
Se definen la clase principal Persona y la subclase Hombre. Nuevo un objeto Man e imprime todas las propiedades.
ECMAScript V5 agrega un método getPrototypeOf estático a Object (implementado por Firefox/Chrome) para obtener el prototipo del objeto. Se puede utilizar para imitar el super de Java.
Copie el código de código de la siguiente manera:
función Persona(){
this.method1 = función(){alerta(1)}
}
Persona.prototipo.método2 = función(){alerta(2);}
función Hombre(){
this.m1 = función(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//Herencia de prototipo
Man.prototipo.m2 = función(){
Object.getPrototypeOf(this).method2();
}
var hombre = nuevo Hombre();
hombre.m1();
hombre.m2();
El método m1 que depende de esto en la subclase Man llama al método1 que depende de esto en la clase principal Persona, y el método m2 que depende de prototipo llama al método2 en el prototipo de la clase principal.
De lo anterior se puede ver que el prototipo del objeto no solo incluye los atributos de su prototipo de constructor, sino que también incluye los atributos de este en el constructor. Por supuesto, debido a razones de contexto en JavaScript, esto en la clase principal no se puede convertir automáticamente en la subclase y se requieren algunas habilidades para completarlo.
Así es como funciona en Java
Copie el código de código de la siguiente manera:
paquete bao1;
clase Persona {
nombre de cadena privada;
Persona (nombre de cadena) {
this.nombre = nombre;
}
método público vacío1() {
System.out.println(este.nombre);
}
}
clase Hombre extiende Persona{
Hombre (nombre de cadena) {
super(nombre);
}
vacío público m1() {
super.método1();
}
}
Prueba de clase pública {
público estático vacío principal (String [] argumentos) {
Hombre hombre1 = nuevo Hombre("Jack");
man1.m1();
}
}