Ext.namespace("App.common.util");
App.common.util.DataGetter = function(){
从上面例子可以看出,一个字符串("App.common.util"),经过Ext.namespace处理之后,便能像正常的js代码对象一样可以任意的添加属性(MyFormValidater 、DataGetter )。到底是什么动作可以产生这样的效果呢。看源代码(以下代码出自3.2版本):
view plaincopy to clipboardprint?
namespace : function(){
经过上面的处理之后,我们上面的例子代码实际上等效于:
window['App'] = {};
window['App'] ['common'] = {};
window['App'] ['common'] ['util']= {};
由于window是一个全局对象,所以:
App = {};
App.common = {};
App.common.util = {}
由上面的分析,命名空间其实就是window全局对象下面的各个对象树(还可以定义App.common.form等等)
本文深入探讨了Ext.js组织代码中使用命名空间(namespace)的方法,通过实例展示了如何有效解决JavaScript变量冲突问题,并详细解析了Ext.namespace()函数的实现原理。
1147

被折叠的 条评论
为什么被折叠?



