Dieses Mal zeige ich Ihnen, wie Sie Object.getPrototypeOf verwenden, um die übergeordnete Klasse in einer JS-Unterklasse aufzurufen. Das Folgende ist ein praktischer Fall.
Jede Funktion verfügt über ein Prototypattribut, das als Prototyp bezeichnet wird. Für jedes Objekt gibt es auch einen Prototyp, Firefox/Safari/Chrome/Opera Der Zugriff kann über __proto__ erfolgen, und in IE6/7/8 ist keine relevante Schnittstelle verfügbar.
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); }
definiert die übergeordnete Klasse Person und die Unterklasse Man. Erstellen Sie ein neues Man-Objekt und geben Sie alle Eigenschaften aus.
ECMAScript
V5 fügt Object eine statische getPrototypeOf-Methode hinzu (Firefox/Chrome hat sie implementiert).
), wird verwendet, um den Prototyp des Objekts zu erhalten. Es kann verwendet werden, um Javas Super nachzuahmen.
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();
Die m1-Methode, die in der Unterklasse Man daran hängt, ruft die Methode1 auf, die in der übergeordneten Klasse Person daran hängt, und die m2-Methode, die am 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
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(); } }
Das obige ist der detaillierte Inhalt vonWie verwendet eine JS-Unterklasse Object.getPrototypeOf, um die übergeordnete Klasse aufzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!