1
+ <!DOCTYPE html>
2
+ < html lang ="en ">
3
+ < head >
4
+ < meta charset ="UTF-8 ">
5
+ < title > 扫描文件夹</ title >
6
+ </ head >
7
+ < body >
8
+ < script >
9
+
10
+ var Floder = function ( name ) {
11
+ this . name = name ;
12
+ this . files = [ ] ; //存储文件
13
+ this . parent = null ; //引用父节点
14
+ }
15
+
16
+ Floder . prototype . add = function ( file ) {
17
+ file . parent = this ; //设置父对象
18
+ this . files . push ( file )
19
+ }
20
+
21
+ Floder . prototype . scan = function ( ) {
22
+ console . log ( '考试扫描文件夹 ' + this . name ) ;
23
+ for ( var i = 0 , file , files = this . files ; file = files [ i ++ ] ; ) {
24
+ file . scan ( ) ;
25
+ }
26
+ }
27
+
28
+ Floder . prototype . remove = function ( ) {
29
+ if ( ! this . parent ) { //根节点或者树外的游离节点
30
+ return ;
31
+ }
32
+ for ( var files = this . parent . files , l = files . length - 1 ; l >= 0 ; l -- ) {
33
+ var file = files [ l ]
34
+ if ( file === this ) {
35
+ files . splice ( l , 1 )
36
+ }
37
+ }
38
+ }
39
+
40
+
41
+
42
+ var File = function ( name ) {
43
+ this . name = name ;
44
+ this . parent = null ;
45
+ }
46
+
47
+ File . prototype . add = function ( ) {
48
+ throw new Error ( '文件下面不能在添加文件' )
49
+ }
50
+
51
+ File . prototype . scan = function ( ) {
52
+ console . log ( '开始扫描文件:' + this . name ) ;
53
+ }
54
+
55
+ File . prototype . remove = function ( ) {
56
+ if ( ! this . parent ) {
57
+ return ;
58
+ }
59
+ for ( var files = this . parent . files , l = files . length - 1 ; l >= 0 ; l -- ) {
60
+ var file = files [ l ]
61
+ if ( file === this ) {
62
+ files . splice ( l , 1 )
63
+ }
64
+ }
65
+
66
+ }
67
+ //demo2
68
+ var folder = new Floder ( '学习资料' )
69
+ var folder1 = new Floder ( 'javacript' )
70
+ var file1 = new File ( '精通jQuery' )
71
+ folder1 . add ( new File ( 'javasript 高级程序设计' ) )
72
+ folder . add ( folder1 )
73
+ folder . add ( file1 ) ;
74
+ folder1 . remove ( ) ;
75
+ folder . scan ( ) ;
76
+
77
+ // demo1
78
+ // var folder = new Floder('学习资料')
79
+ // var folder1 = new Floder('javacript')
80
+ // var folder2 = new Floder('jQuery')
81
+
82
+ // var file3 = new File('javacript 设计模式')
83
+ // var file1 = new File('精通jQuery')
84
+ // var file2 = new File('重构和模式')
85
+
86
+ // folder1.add(file1);
87
+ // folder2.add(file2);
88
+
89
+ // folder.add(folder1)
90
+ // folder.add(folder2)
91
+ // folder.add(file3);
92
+
93
+ // //需求是把移动硬盘里的文件和文件夹都复制到这棵树中
94
+ // var folder3 = new Floder('Nodejs')
95
+ // var file4 = new File('nodejs权威指南')
96
+ // folder3.add(file4);
97
+ // var file5 = new File('javascript 语言精髓和编程实践')
98
+ // folder.add(folder3)
99
+ // folder.add(file5);
100
+
101
+ // folder.scan();
102
+
103
+ </ script >
104
+ </ body >
105
+ </ html >
0 commit comments