看到在网易或Sina或什么
网站,但也有像这样的东西,在JS的时间只是在桶的水平下降,当场被吓傻了。
但这次,我打算亲自去分析一下,以后不会混淆的。
复制代码代码如下所示:
/ /调用的例子:bradio.namespace(
宽带无线移动通信
系统。lang.array );
这是百度编译的源代码,变量是A,B,C,D.…然后我会重新写一个规范点。
,开始分析
(bradio.namespace =
功能){ / /
创建一个命名
空间 创建一个论点, / / {宽带无线移动通信系统。lang.array}
对于一类对象
C,D,E,F,是一个计数器,D是内部循环的计数器,E是拆分后的名称空间数组,f是
参数参数的长度。
c=0;
为(F = a.length;C<F;C++){
E =(a { } + )。分裂(, / /分);命名空间,分裂{宽带无线移动通信系统
B = BRadio; / /基础对象,此对象的基础上添加命名空间
为(D = = =宽带无线移动通信系统E { 0 } 1:0;D组e.length; / / D + +)如果第一个是宽带无线移动通信系统,第二开始遍历{宽带无线移动通信系统
{ } } { E B E = B { } B = B { } { } { } E | | { }。
事实上,相当于
/ / B E D } } = { { { { } } B E D | | {} / /如果当前对象被
操作的对象,它不存在空的对象分配
在添加下命名空间对象的基础上,覆盖下一个周期的对象
}
返回B返回对象的最后一层
};
以下是可以理解的编译版本。
复制代码代码如下所示:
/ / bradio.namespace(宽带无线移动通信系统。lang.array );
(bradio.namespace =功能){ / /创建一个命名空间
var args =参数,
父=空,
Arr,我,J,Len;
为(i = 0,len = args.length;我< len;i++){
ARR =(+ args {我})。分裂(。);
母=宽带无线移动通信系统;
为(J = = =宽带无线移动通信系统ARR { 0 } 1:0;J < arr.length;j++){
{ } { J父母ARR ARR { } { } },| | = { };
父母=父母{ { } }度{J}.;
}
}
回报父母;
}
当然,这只是我的理解。如果不是很
正确,请帮助大侠们指出,以免误导大家。