Jede Funktion verfügt über ein Prototypattribut, das als Prototyp bezeichnet wird. Jedes Objekt verfügt außerdem über einen Prototyp, auf den über __proto__ in Firefox/Safari/Chrome/Opera zugegriffen werden kann. In IE6/7/8 ist keine relevante Schnittstelle verfügbar.
Kopieren Sie den Codecode wie folgt:
Funktion Person(){
this.method1 = function(){}
}
Person.prototype.method2 = function(){}
Funktion Man(){}
Man.prototype = neue Person();
Man.prototype.m1 = function(){}
Man.prototype.m2 = function(){}
var m = new Man();
for(var a in m.__proto__){
Warnung(a);
}
Es werden die übergeordnete Klasse Person und die Unterklasse Man definiert. Erstellen Sie ein neues Man-Objekt und geben Sie alle Eigenschaften aus.
ECMAScript V5 fügt Object eine statische getPrototypeOf-Methode hinzu (implementiert von Firefox/Chrome), um den Prototyp des Objekts zu erhalten. Es kann verwendet werden, um Javas Super nachzuahmen.
Kopieren Sie den Codecode wie folgt:
Funktion Person(){
this.method1 = function(){alert(1)}
}
Person.prototype.method2 = function(){alert(2);}
Funktion Man(){
this.m1 = function(){
Object.getPrototypeOf(this).method1();
}
}
Man.prototype = new Person();//Prototyp-Vererbung
Man.prototype.m2 = function(){
Object.getPrototypeOf(this).method2();
}
var man = new Man();
man.m1();
man.m2();
Die m1-Methode, die in der Unterklasse „Man“ daran hängt, ruft Methode1 auf, die in der übergeordneten Klasse „Person“ hängt, und die m2-Methode, die an „prototyp“ hängt, ruft Methode2 im Prototyp der übergeordneten Klasse auf.
Aus dem Obigen ist ersichtlich, dass der Objektprototyp nicht nur die Attribute seines Konstruktorprototyps enthält, sondern auch die Attribute dieses im Konstruktor. Aus Kontextgründen in JavaScript kann dies in der übergeordneten Klasse natürlich nicht automatisch in die Unterklasse konvertiert werden, und es sind einige Fähigkeiten erforderlich, um es abzuschließen.
So funktioniert es in Java
Kopieren Sie den Codecode wie folgt:
Paket bao1;
Klasse Person {
privater String-Name;
Person(Stringname) {
this.name = Name;
}
public void method1() {
System.out.println(this.name);
}
}
Klasse Man erweitert Person{
Man(String-Name) {
super(Name);
}
öffentliche Leere m1() {
super.method1();
}
}
öffentlicher Klassentest {
public static void main(String[] args) {
Mann man1 = neuer Mann("Jack");
man1.m1();
}
}