Mode de combinaison: Combinez un groupe d'objets dans une structure d'arbre, traitez l'objet combiné et l'objet feuille de manière unifiée et ignorez les différences entre elles (car l'objet feuille peut également contenir des objets de feuilles et devenir un objet combiné). Les objets en mode combinaison ne peuvent être qu'une relation un-à-plusieurs, et il ne peut pas se produire.
Unité de base: Un objet combiné contient plusieurs objets à feuilles. Chaque unité de base peut être un objet de feuille d'un autre objet combiné. Un dossier ou un fichier peut également être le contenu d'autres dossiers, mais un dossier ou un fichier ne peut pas appartenir à plusieurs dossiers supérieurs en même temps.
Lors de la mise en œuvre du mode combinaison dans JavaScript, pour s'assurer que l'objet combiné et l'objet feuille ont la même méthode d'interface, les opérations du même groupe d'objets feuilles doivent être cohérentes.
exemple:
// Définissez le dossier var à objet combiné = fonction (name) {this.name = name; this.parent = null; this.files = [];}; dosder.prototype.add = function (file) {file.parent = this; if (this.files.indexof (file) === -1) {this.files.push (file);} else {console.log ('/' + file.name + '/' existant déjà, ajout failli ');}}; folder.prototype.scan = function () {if (this.parent) {console.log (' start sccan / '' + this.parent.name + '/':: '+ this.name);} else {console.log (' Démarrer la numérisation du répertoire racine: '+ this.name);} // La clé est ici, appelez la méthode d'interface de tous ses objets de feuilles scan () pour (var i = 0, fichier; file; this.files [i ++];) {file.scan ();}}; folder.pototype. this.files.indexof (fichier); if (n === -1) {console.log ('ne peut supprimer: /''+file.name+'/' n'existe pas: ');} if (n> = 0) {this.files.splice (n, 1); console.log (' a été supprimé à succès: '+ file.name);}};! {this.name = name; this.parent = null;}; file.prototype.add = function () {console.log ('ne peut pas être ajouté sous le fichier');}; file.prototype.scan = function () {console.log (this.parent.name + ':' + this.name);}; file.pototype.reMoveLy {Console.log ('Impossible d'être supprimé: /''+File.name+'/'do not exist:');}; // test var dosder = new Folder ('Directory'); var Folder1 = new Folder ('Learn Material'); var Folder2 = New Folder ('javascrip File ('qq.jpg'); dossier.add (dossier1); dossier.add (dossier1); dossier.add (dossier2); folder1.add (file1); folder2.add (file2); // matériau d'apprentissage 'a ajouté avec succès //' le matériel d'apprentissage '' déjà, mais a échoué à ajouter // 'javascript' avec succès // 'qq.jpg' a ajouté avec succès Fold.Remove (Folder1); Folder.Remove (Folder1); file1.remove (file1); // supprimé avec succès: le matériel d'apprentissage // incapable de supprimer: 'le matériel d'apprentissage' n'existe pas: // non en mesure de supprimer: 'node.je' n'existe pas: folder.scan ();); // Ceci équivaut à l'exécution d'une commande macro // Démarrer la numérisation du répertoire racine: répertoire // Démarrer la numérisation du «répertoire»: javascript // javascript: qq.jpgCe qui précède est le mode de combinaison JavaScript introduit par l'éditeur. J'espère que ce sera utile à tout le monde. Si vous avez des questions, veuillez me laisser un message et l'éditeur répondra à tout le monde à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!