Cette fois, je vais vous montrer comment utiliser Object.getPrototypeOf pour appeler la classe parent dans une sous-classe JS. Suivons les traces de l'éditeur et jetons un coup d'œil.
Chaque fonction possède un attribut de prototype, appelé prototype. Chaque objet possède également un prototype, Firefox/Safari/Chrome/Opera Il est accessible via __proto__ et aucune interface pertinente n'est fournie dans IE6/7/8.
function Person(){ this.method1 = function(){} } Person.prototype.method2 = function(){} function Man(){} Man.prototype = new Person(); Man.prototype.m1 = function(){} Man.prototype.m2 = function(){} var m = new Man(); for(var a in m.__proto__){ alert(a); }
définit la classe parent Person et la sous-classe Man. créez un objet Man et imprimez toutes les propriétés.
ECMAScript
La V5 ajoute une méthode statique getPrototypeOf à Object (Firefox/Chrome l'a implémenté
), utilisé pour obtenir le prototype de l'objet. Il peut être utilisé pour imiter le super de Java.
function Person(){ this.method1 = function(){alert(1)} } Person.prototype.method2 = function(){alert(2);} function Man(){ this.m1 = function(){ Object.getPrototypeOf(this).method1(); } } Man.prototype = new Person();//原型继承 Man.prototype.m2 = function(){ Object.getPrototypeOf(this).method2(); } var man = new Man(); man.m1(); man.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 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 ça marche en Java
package bao1; class Person { private String name; Person(String name) { this.name = name; } public void method1() { System.out.println(this.name); } } class Man extends Person{ Man(String name) { super(name); } public void m1() { super.method1(); } } public class Test {public static void main(String[] args) { Man man1 = new Man("Jack");man1.m1(); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!