Es gibt drei Möglichkeiten, die JavaScript-Schnittstelle nachzuahmen: 1. Kommentierungsmethode 2. Überprüfen Sie die Attributmethode.
1. Kommentierungsmethode: Diese Methode gehört zur Kategorie der Programmdokumente, und die Vererbung und Implementierung von Schnittstellen hängt völlig bewusst von den Programmierern ab.
/*interface people {function createShead (); Funktion createBody ();}*/var woman = function (name) {// implementiert people interfacethis.name = name;} Frau erstellt ");} Frau// 2. Attributüberprüfungsmethode: Fügen Sie die Schnittstellenmethode hinzu, die in die Klassenattributliste implementiert werden soll, und überprüfen Sie wiederholt, ob diese Methoden durch definierte Erkennung implementiert wurden.
// Vor- und Nachteile: Sie können Programmierer zwingen, die Schnittstelle zu implementieren, und wenn Sie sie nicht merken, werden Sie einen Fehler melden. Obwohl es erklärt, welche Methoden Sie implementiert haben, gibt es wahrscheinlich Auslassungen während der Implementierung
/*Schnittstelle people {function createShead (); Funktion createBody ();}*/var woman = function (name) {this.name = name; this.implementsInterfaces = ['people'];} Frau erstellt ");} Frau j = 0; j <obj.implementsInterfaces.length; j ++) {if (obj.implementsInterfaces [j] = interfacename) {interfaceFound = true;}} if (! interfaceFound) {return false;} return true;} Funktion isimPlemeMts. if (! Implementieren (Instanz, Schnittstellen)) {Neuen Fehler werfen ("Objekt implementiert keine erforderliche Schnittstelle");}}3..
Die beiden oben genannten erklären, dass sie die Schnittstellen implementiert haben, aber die Aussage ist nicht wichtig. Der Kern der Implementierung der Schnittstelle besteht darin, dass die Klasse den Schnittstellenmethodensatz implementiert. Wenn die Klasse Funktionen mit demselben Methodenfunktionsnamen wie die definierte Schnittstelle hat, wird in Betracht gezogen, um die Schnittstelle zu implementieren
// Schnittstellenklasse, verwendet, um die Schnittstelle zu erstellen var interface = Funktion (Name, Motheds) {if (Agrumente.Length! mothereds [i]! "+Argumente.Length+" Argumente, aber genau erwartet 1 ")} für (var i = 0; i <objs.länge; i ++) {var obj = objs [i]; für (var j = 0; j <this.motheds.länge; j ++) {var mothed = this.methods [j]; 'function') {Neuen Fehler werfen ('Funktion interface. Name; this.implementsInterfaces = ['people'];} woman.prototype.showname = function () {alert (this.name);} Frau created");}//Subclass var Man = function(name){this.name = name;this.implementsInterfaces = ['People'];}Man.prototype.showName = function(){alert(this.name);}Man.prototype.createBody = function(){ //Implement the necessary method alert("The man's body has been erstellt ");} Man.Prototype.createhead = function () {alert (" Der Kopf des Mannes wurde erstellt ");} // verteidigen, ob poeple.ensureImplements (['Frau', 'Man']);