[ExtJS3.2源码每天一小时](1)ext-base.js做了什么(之二)

我们今天来继续说ext-base中到底做了什么,主要还是针对Ext这个核心对象。
1.namespace 命名空间定义 所谓命名空间,从根本上说就是对象嵌套对象
[quote]
namespace : function(){
var o, d;
//循环参数列表
Ext.each(arguments, function(v) {
//根据“.”将命名空间层级截开
d = v.split(".");
//定义最外层命名空间
o = window[d[0]] = window[d[0]] || {};
//生成除最外层命名空间的相关对象
Ext.each(d.slice(1), function(v2){
o = o[v2] = o[v2] || {};
});
});
return o;
},
[/quote]
下面举个例子来详细说明:
var a = Ext.namespace("Ext.diy.xhr","JS.Util");
最终执行完后 a对应的引用 与 Util对应的引用是相同的。

下面我们来分析它的执行流程:
1.Ext.each(arguments, function(v){})遍历接收到的参数。
上面的例子对应的就是“Ext.diy.xhr","JS.Util"这两个参数了。
2.v.split(".");对于每个参数,根据"."将层级截取出来。
3.先生成第一层的空间对象。
o = window[d[0]] = window[d[0]] || {};
4.将第一层排外
d.slice(1)
5.继续循环除第一层之外的其他层,嵌套生成对象。
o = o[v2] = o[v2] || {};

通过以上的分析,我们不难得出,a最后拿到的引用是Util对象的引用。

通过命名空间的定义,形成了一系列的对象嵌套引用,在这种情况下,所有的层级访问必须带有空间层级,例如:访问diy对象,就必须为Ext.diy,访问Util对象,就必须为JS.Util等,无法单独访问diy和Util
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值