조합 모드 : 객체 그룹을 트리 구조로 결합하고 결합 된 물체와 잎 물체를 통합 방식으로 처리하고 그 차이를 무시합니다 (잎 물체에 잎 물체를 포함하고 결합 된 물체가 될 수 있기 때문입니다). 조합 모드의 객체는 일대일 관계 일 수 있으며, 다중 하나는 발생할 수 없습니다.
기본 장치 : 결합 된 물체에는 여러 개의 잎 객체가 포함되어 있습니다. 각 기본 장치는 다른 조합 객체의 리프 객체가 될 수 있습니다. 폴더 나 파일은 다른 폴더의 내용 일 수도 있지만 폴더 나 파일은 동시에 여러 우수한 폴더에 속할 수 없습니다.
JavaScript에서 조합 모드를 구현할 때 결합 된 물체와 잎 객체가 동일한 인터페이스 방법을 갖도록하기 위해 동일한 그룹의 잎 객체의 작동이 일관성이 있어야합니다.
예:
// 결합 된 개체 var 폴더 = function (name) {this.name = name; this.parent = null; this.files = [];}; 폴더.prototype.add = function (file) {file.parent = this; if (this.files.indexof (file) ==== -1) {this.files.push (file);} else {console.log ( '/'+file.name+'/'이미 존재하고 실패한 add};}}; 폴더.prototyp.scan = function () {if (this.parent) {console.log ( 'start scan/' '+this.name.name+'/'/'/'/'/': '+this.name);} else {console.log ('루트 디렉토리 스캔 : '+th리 this.files.indexof (file); if (n === -1) {console.log ( '삭제할 수 없음 :/'+file.name+'/ '가 존재하지 않는다 :');} if (n> = 0) {this.files.splice (n, 1); console.log ( 'successly deleted :'+file.name});}}; {this.name = name; this. this.parent = null;}; file.prototyp.add = function () {console.log ( '파일 아래에 추가 할 수 없음';};}; file.prototyp.scan = function () {console.log (이. 삭제됩니다 :/'+file.name+'/'do 존재 :');};};}; // test var 폴더 = new 폴더 ( 'directory'); var folder1 = new Folder ( 'Learn watters'); var folder2 = new Folder ( 'javaScript'); var file1 = new File = new file ( 'qq.jpg'); folder.add (folder1); folder.add (folder1); folder.add (folder2); folder1.add (file1); folder2.add (file2); // '학습 자료'는 이미 존재했지만 성공적으로 추가되지 않았지만 // 'javascript가 추가되지 않았다 // 성공적으로 // 'qq.jpg'는 성공적으로 wold.remove (folder1); folder.remove (folder1); file1.remove (file1); // 성공적으로 삭제되었습니다 : 삭제할 수 없습니다 : '학습 자료'는 존재하지 않습니다 : // 삭제할 수 없음 : 'node.js'는 존재하지 않습니다. 'node.scan (); // 매크로 명령 실행과 동일합니다. // 루트 디렉토리 스캔 시작 : 디렉토리 // '디렉토리 스캔 시작 : javaScript // javaScript : QQ.JPG위는 편집기가 소개 한 JavaScript 조합 모드입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!