该文件Google作了处理,所有的变量名都被处理成了简单的a,b,c,d之类,所以理解起来比较费劲。
该JS文件是以IE版本的http://maps.google.com/mapfiles/maps.21.js来分析的,其他的几个我觉得基本的架构也应该差不多,所以我没有仔细看,实际上,这个文件Google也会不停的更新(在我写这个文章的时候,我发现Google已经更新到maps.25.js了),不过我想架构上也不会有太大的变动吧。
由于该文件是在比较复杂,所以难免会出现理解错误的情况,请谅解!
下面是第5个(这个是两个简单的库对象):
1
//这个对像是一个列表,用来进行可能重复文本项的处理,将每一个项名称通过add添加到列表中,并通过contains检查是否已经存在
2 function pa(a)
3 {
4 this.size=0;
5 if(a)
6 {
7 for(var b=a.length-1;b>=0;b--)this.add(a[b])
8 }
9 }
10 //添加
11 pa.prototype.add=function(a)
12 {
13 if(!this.contains(a))
14 {
15 this[":"+a]=1;
16 this.size++
17 }
18 };
19 //删除
20 pa.prototype.remove=function(a)
21 {
22 if(this.contains(a))
23 {
24 delete this[":"+a];
25 this.size--
26 }
27 };
28 //检查是否已经存在
29 pa.prototype.contains=function(a)
30 {
31 return this[":"+a]==1
32 };
33 function Za()
34 {
35 return false
36 }
37//判断变量a是否存在
38 function Va(a)
39 {
40 if(!a)
41 {
42 if(Error)
43 {
44 throw"assertion failed: "+Error().stack;
45 }
46 else
47 {
48 throw"assertion failed";
49 }
50 }
51 };
2 function pa(a)
3 {
4 this.size=0;
5 if(a)
6 {
7 for(var b=a.length-1;b>=0;b--)this.add(a[b])
8 }
9 }
10 //添加
11 pa.prototype.add=function(a)
12 {
13 if(!this.contains(a))
14 {
15 this[":"+a]=1;
16 this.size++
17 }
18 };
19 //删除
20 pa.prototype.remove=function(a)
21 {
22 if(this.contains(a))
23 {
24 delete this[":"+a];
25 this.size--
26 }
27 };
28 //检查是否已经存在
29 pa.prototype.contains=function(a)
30 {
31 return this[":"+a]==1
32 };
33 function Za()
34 {
35 return false
36 }
37//判断变量a是否存在
38 function Va(a)
39 {
40 if(!a)
41 {
42 if(Error)
43 {
44 throw"assertion failed: "+Error().stack;
45 }
46 else
47 {
48 throw"assertion failed";
49 }
50 }
51 };