Hay tres formas de imitar la interfaz JavaScript: 1. Método de comentarios 2. Verifique el método de atributo 3. Método de identificación de forma de estilo de pato
1. Método de comentarios: este método pertenece a la categoría de documentos del programa, y la herencia e implementación de interfaces depende completamente conscientemente de los programadores.
/*interface People{function createHead();function createBody();}*/var woman = function(name){ //implements People interfacethis.name = name;}woman.prototype.showName = function(){alert(this.name);}woman.prototype.createBody = function(){ //Implement the necessary method alert("The body has been creado ");} woman.prototype.createhead = function () {alerta (" La cabeza ha sido creada ");}// 2. Método de verificación de atributos: Agregue el método de interfaz que se implementará en la lista de atributos de clase y verifique repetidamente si esos métodos se han implementado a través de la detección definida.
// Pros y contras: puede obligar a los programadores a implementar la interfaz, y si no se da cuenta, informará un error. Sin embargo, aunque declara los métodos que ha implementado, es probable que haya omisiones durante la implementación
/*interfaces personas {function createhead (); function createBody ();}*/var woman = function (name) {this.name = name; this.ImplementsInterfaces = ['People'];} woman.prototype.showname = function () {alerta (this.name);} woman.protype.create = function = function creado ");} mujer.prototype.createhead = function () {alert (" la cabeza ha sido creada ");} función implement (obj, interfaces) {for (var i = 1; i <interfaces.length; i ++) {var interfacename = interfaces [i]; var interfound = false; para (var (var (var (var (var (var (var (var (var (var (var j = 0; j <obj.implementsInterfaces.length; j ++) {if (obj.ImplementsInterfaces [j] = interfACeName) {interfaceFound = true; break;}} if (! InterfaceFound) {return false;}} return true;} function isImplememts (instancia, instancia, interfaces) {// juzga si el objeto tiene el objeto correspondiente a la interfaz de la interfaz de la interfaz de if (! implement (instancia, interfaces)) {tirar un nuevo error ("El objeto no implementa una interfaz requerida");}}3.
Ambos declaran que han implementado las interfaces, pero la declaración no es importante. El núcleo de la implementación de la interfaz es que la clase implementa el conjunto de métodos de interfaz. Si la clase tiene funciones con el mismo nombre de función de método que la interfaz definida, se considera que implementa la interfaz
// clase de interfaz, utilizada para crear interface var interface = function (name, motheds) {if (agruments.length! = 2) {throw new Error ("Constructor de interfaz llamado con"+arguments.length+"argumentos, pero esperado exactamente 2");} this.name = name; this.methods = []; para (var i = 0; i <motheds.length; i (i (i (yo++) MotherEds [i]! == 'string') {tire nuevo error ('Interface Constructor espera que los nombres de las nomindradas sean'+'Pases en una cadena');} this.methods.push (motheds [i]);}} interface.prototype.ensureImplements = function (objs) {if (agrumments.lengthength! = 1) "+argumentos.length+" argumentos, pero esperados exactamente 1 ")} para (var i = 0; i <objs.length; i ++) {var obj = objs [i]; for (var j = 0; j <this.motheds.length; j ++) {var mothed = this.methods [j]; if (! Obj [Mothed] ||! TypeOf! 'function') {Throw New Error ('Function Interface.ensureImplements: Implements Interface'+this.name+', obj.mothed'+Mothed+'no se encontró');}}}} // crea interfaz var personas = new interface ('personas', ['createhead', '', ' nombre; this.ImplementsInterfaces = ['People'];} Woman.prototype.showname = function () {alerta (this.name);} woman.prototype.createBody = function () {// Implementar el método necesario alerta ("El cuerpo de la mujer se ha creado");} Woman.prototype.createhead = function () {alerta de la mujer ". creado ");} // subclass var man = function (name) {this.name = name; this.ImplementsInterfaces = ['People'];} man.prototype.showname = function () {alert (this.name);} man.prototype.createBody = function () {// Implementar el método necesario alerta necesario (" creado ");} man.prototype.createhead = function () {alert (" La cabeza del hombre ha sido creada ");} // defiende si implementa poeple.ensureImplements (['mujer', 'hombre']);