Chaque fonction possède un attribut prototype, appelé prototype. Chaque objet possède également un prototype, accessible via __proto__ dans Firefox/Safari/Chrome/Opera. Aucune interface pertinente n'est fournie dans IE6/7/8.
Copiez le code comme suit :
fonction Personne(){
this.method1 = fonction(){}
}
Personne.prototype.method2 = fonction(){}
fonction Homme(){}
Man.prototype = new Person();
Man.prototype.m1 = fonction(){}
Man.prototype.m2 = fonction(){}
var m = nouvel homme ();
pour(var a dans m.__proto__){
alerte(a);
}
La classe parent Person et la sous-classe Man sont définies. créez un objet Man et imprimez toutes les propriétés.
ECMAScript V5 ajoute une méthode statique getPrototypeOf à Object (implémentée par Firefox/Chrome) pour obtenir le prototype de l'objet. Il peut être utilisé pour imiter le super de Java.
Copiez le code comme suit :
fonction Personne(){
this.method1 = function(){alerte(1)}
}
Personne.prototype.method2 = function(){alert(2);}
fonction Homme(){
this.m1 = fonction(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//Héritage du prototype
Man.prototype.m2 = fonction(){
Object.getPrototypeOf(this).method2();
}
var homme = nouvel Homme ();
homme.m1();
homme.m2();
La méthode m1 accrochée à ceci dans la sous-classe Man appelle la méthode1 accrochée à cela dans la classe parent Person, et la méthode m2 accrochée au prototype appelle la méthode2 sur le prototype de la classe parent.
Il ressort de ce qui précède que le prototype d'objet inclut non seulement les attributs de son prototype de constructeur, mais inclut également les attributs de celui-ci dans le constructeur. Bien sûr, pour des raisons de contexte en JavaScript, cela dans la classe parent ne peut pas être automatiquement converti dans la sous-classe, et certaines compétences sont nécessaires pour le compléter.
Voici comment cela fonctionne en Java
Copiez le code comme suit :
paquet bao1 ;
classe Personne {
nom de chaîne privé ;
Personne (nom de chaîne) {
this.name = nom ;
}
public void méthode1() {
System.out.println(this.name);
}
}
classe L'Homme étend la Personne{
Homme (Nom de la chaîne) {
super(nom);
}
public vide m1() {
super.method1();
}
}
Test de classe publique {
public static void main (String[] arguments) {
Homme man1 = nouvel Homme("Jack");
homme1.m1();
}
}