Modo combinación: combine un grupo de objetos en una estructura de árbol, trate el objeto combinado y el objeto de la hoja de manera unificada, e ignore las diferencias entre ellos (porque el objeto de la hoja también puede contener objetos de hoja y convertirse en un objeto combinado). Los objetos en el modo de combinación solo pueden ser una relación de uno a muchos, y no puede ocurrir muchos a uno.
Unidad básica: un objeto combinado contiene múltiples objetos de hoja. Cada unidad básica puede ser un objeto de hoja de otro objeto combinado. Una carpeta o archivo también puede ser el contenido de otras carpetas, pero una carpeta o archivo no puede pertenecer a múltiples carpetas superiores al mismo tiempo.
Al implementar el modo de combinación en JavaScript, para garantizar que el objeto combinado y el objeto de hoja tengan el mismo método de interfaz, las operaciones del mismo grupo de objetos de hoja deben ser consistentes.
ejemplo:
// Defina la carpeta var de objeto combinado = function (name) {this.name = name; this.Parent = null; this.files = [];}; carpeta.prototype.add = function (file) {file.parent = this; if (this.files.indexof (file) ==================== -1) {this.files.push (file);} else {console.log ('/'+file.name+'/' ya existe, agrega fallido ');}}; carpeta.prototype.scan = function () {if (this.parent) {console.log (' start scan/''+this.parent.name+'/'::::::::::::::: '+this.name);} else {console.log (' iniciar escaneando el directorio raíz: '+this.name);} // La clave está aquí, llame al método de interfaz de todos sus objetos de hoja escane () para (var i = 0, file; file = this.files [i ++];) {file.scan ();}; carpet.prototype.remove this.files.IndexOf (archivo); if (n === -1) {console.log ('no se puede eliminar: /'''+file.name+'/' no existe: ');} if (n> = 0) {this.files.splice (n, 1); console.log (' deleted con éxito: '+archivo); {this.name = name; this.parent = null;}; file.prototype.add = function () {console.log ('no se puede agregar debajo del archivo');}; file.protype.scan = function () {console.log (this.parent.name+':'+this.name);};} ;prototipo.remove (free () {console.log ('no se puede eliminar: /'''+file.name+'/'Do no existe:');}; // Test var carpeter = new carpeter ('directorio'); var carpeter1 = new carpoder ('Learn Material'); var carpeter2 = nueva carpeta ('javaScript'); var file1 = nuevo file.js '; Archivo ('qq.jpg'); carpeta.add (carpeta1); carpeta.add (carpeta1); carpeta.add (carpeta2); carpeta1.add (file1); carpeta2.add (file2); // 'Material de aprendizaje' agregado exitosamente // 'Material de aprendizaje' ya existe, pero no pudo agregar // 'javaScript' agregó exitosos con éxito // 'qq.jpg' agregado con éxito Fold.remove (carpeta1); carpeta.remove (carpeta1); file1.remove (file1); // eliminado con éxito: material de aprendizaje // no puede eliminar: 'material de aprendizaje' no existe: // no puede eliminar: 'node.js' no existe: carpinter.scan (); // Esto es equivalente a ejecutar un comando macro // iniciar escaneando el directorio raíz: directorio // inicio de escanear el 'directorio': javascript // javascript: qq.jpgLo anterior es el modo de combinación JavaScript introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!