`

ExtJs源码分析与学习—ExtJs核心代码扩展

EXT 
阅读更多

      前面三篇文章参考作者snandy总结了Ext中核心代码Ext.js,今天对Ext.js的扩展Ext-more.js进行分析。这里首先感谢snandy ,这位作者文章写的不错,对Ext的理解也很深入,学习了。

 

     该类中主要是对Ext核心方法进行了扩展

 

Ext.ns("Ext.grid", "Ext.list", "Ext.dd", "Ext.tree", "Ext.form", "Ext.menu",
       "Ext.state", "Ext.layout", "Ext.app", "Ext.ux", "Ext.chart", "Ext.direct");

这段代码为Ext提供的组件创建了命名空间,这些组件后续会分析

 

 

Ext.apply(Ext, function(){
    var E = Ext,
        idSeed = 0,
        scrollWidth = null;
   return {
    emptyFn : function(){},
    ...
    ...
   };
}());
 

 调用了Ext的apply方法对Ext方法进行了扩展,该处创建了匿名函数,并执行了改匿名函数,该匿名函数返回值为函数,关于这种写法的实现,请参照以下代码的分析。

 

var anonymityFn = function(){
	return {
		demoFn : function(){alert('返回为对象中的方法demoFn');}
	};
};

anonymityFn.demo2Fn = function(){alert('demo2Fn为anonymityFn静态方法');};
alert(typeof anonymityFn);//function
alert(typeof anonymityFn());//object
anonymityFn.demo2Fn();//demo2Fn为anonymityFn静态方法
anonymityFn.demoFn();//anonymityFn.demoFn is not a function
anonymityFn().demoFn();//返回为对象中的方法demoFn
 

分析上面最后两行执行语句,由于anonymityFn本身为函数,而该函数中没有定义方法demoFn,故会报找不到该函数的错误,而anonymityFn()调用了函数,返回的是对象,且该对象中定义了方法demoFn,故会输出结果

 

 

emptyFn : function(){},

 定义空函数

 

BLANK_IMAGE_URL : Ext.isIE6 || Ext.isIE7 || Ext.isAir ?
                            'http:/' + '/www.extjs.com/s.gif' :
                            'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==',

 在应用服务中应该设置为本地图片,该参数的作用为:ExtJS中在创建组件的时候,组件中需要替换图标的地方,初始化时都是拿这个s.gif替代的,如果用户指定icon属性,它会将s.gif替换为icon的地址,说白了,s.gif就是一个占位的功能,参见源码总结牛人ting570732 ExtJS3.2源码每天一小时]ExtJS中BLANK_IMAGE_URL的由来(十三)

 

以下只列出了Ext核心代码扩展的方法 ,详细实现可查看源代码

 

1、	getDoc()  返回当前HTML document 对象 Ext.Element类型,见代码 Ext.Element.get(document);
2、	num(v, defaultValue)      验证v是否为数值,不是返回defaultValue
3、	value (v, defaultValue, allowBlank)  判断v是否为空,空则返回defaultValue
4、	escapeRe : function(s)  避免传递的字符串参数被正则表达式读取
5、	sequence : function(o, name, fn, scope)   把o[name]转换为一组合函数,详见createSequence
6、	addBehaviors : function(o) 页面被初始化完毕后,在元素上绑定事件监听。事件名在'@'符号后
7、	getScrollBarWidth: function(force) 该方法比较实用,精确的计算了滚动条的宽度,类似也可以计算滚动条的高度。计算浏览器滚动体实际的物理宽度。该值根据OS的不同有所变化,例如主题、字体大小的影响。
8、	copyTo : function(dest, source, names) 复制源对象身上指定的属性到目标对象。
9、	destroy : function()尝试去移除每个传入的对象,包括DOM,事件侦听者,并呼叫他们的destroy方法(如果存在)。该方法主要接纳{@link Ext.Element}与{@link Ext.Component}类型的参数。但理论上任何继承自Ext.util.Observable的子类都可以做为参数传入(支持传入多参)。
10、	destroyMembers : function(o, arg1, arg2, etc) 删除对象的指定属性(支持传入多参,同时删除多个属性)。
11、	clean : function(arr) 复制传入的数组,并删除没有意义的元素,比如 0 null undefined 等
12、	unique : function(arr) 复制传入的数组,并且过滤掉有重复的值
13、	flatten : function(arr)  递归合并一维数组,元素是数组的形式递归调用并合并插入到当前位置
14、	min : function(arr, comp) 返回数组中的最小值
15、	max : function(arr, comp) 返回数组中的最大值
16、	mean : function(arr) 计算数组平均值
17、	sum : function(arr) 数组求和
18、	partition : function(arr, truth) 把数组或NodeList分成两部分,按照不同的取值,比如数组中的奇偶,不同的class等
19、	invoke : function(arr, methodName) 对数组中的每个元素调用指定的一个方法
20、	pluck : function(arr, prop) 取出数组元素指定属性prop对应的值
21、	getCmp : function(id) Ext.ComponentMgr.get 的简写
22、	type : function(o) 返回参数类型的详细信息。如果送入的对象是null或undefined那么返回false, 或是其他类型(见源代码)

以下为 Function增加的方法

23、	createSequence : function(fcn, scope)
创建一个组合函数,调用次序为:原函数 + 参数中的函数。该函数返回了原函数执行的结果(也就是返回了原函数的返回值)。在参数中传递的函数fcn,它的参数也是原函数的参数。


String增加的方法
24、	escape : function(string) 把输入的 ' 与 \ 字符转义。
leftPad : function (val, size, ch) 在字符串左边填充指定字符。这对于统一字符或日期标准格式非常有用。
25、	String.prototype.toggle = function(value, other){
    return this == value ? other : value;
};

比较并交换字符串的值。参数中的第一个值与当前字符串对象比较,如果相等则返回传入的第一个参数,否则返回第二个参数。

26、	String.prototype.trim = function(){
    var re = /^\s+|\s+$/g;
    return function(){ return this.replace(re, ""); };
}();
裁剪字符串两旁的空白符,保留中间空白符

27、	Date.prototype.getElapsed = function(date) {
    return Math.abs((date || new Date()).getTime()-this.getTime());
};

返回date对象创建时间与现在时间的时间差,单位为毫秒。

Number.prototype
28、	constrain : function(min, max){
        return Math.min(Math.max(this, min), max);
}
如果数值在min和max之间,则返回该数值,如果不在该范围内,则返回靠近min或max的值
分享到:
评论

相关推荐

    资料:包括extjs2.0源码

    6. **图表组件**:EXTJS 2.0内置了各种图表类型,如柱状图、饼图、线图等,适用于数据可视化需求,源码分析有助于定制高级图表功能。 7. **Ajax交互**:EXTJS 2.0通过Ajax技术实现与服务器的异步通信,提供了强大的...

    Django整合Extjs源码

    **Django整合ExtJS源码解析** 在Web开发领域,Django作为一个强大的Python Web框架,以其高效、安全和可扩展性而备受青睐。与此同时,ExtJS是一个JavaScript库,用于构建富客户端应用程序,提供了丰富的组件和数据...

    ExtJS源码分析与开发实例宝典--书中代码

    核心技术部分深入讲解Ext JS的核心基础知识,包括JS原生对象的扩展、事件机制、 模板模型、数据模型,包括一个机制、两个模型及六个扩展。基于元素的开发部分讲解了在DOM元素基 础上扩展的Ext JS元素,包括元素操作...

    ExtJS 3.4 源码包

    - **JS类系统**:ExtJS使用面向对象的类系统,类与类之间可以通过继承实现代码重用和扩展。 - **事件系统**:事件驱动是ExtJS的核心机制,允许组件间通信和响应用户操作。 - **Ajax通信**:Ext.Ajax模块负责异步...

    ExtJs 实例+ExtJs中文教程(学习extjs必备)

    最后,结合源码分析,提升你的编程水平,能够更好地应对复杂的应用需求。 总之,ExtJs是一个强大的JavaScript框架,通过学习提供的实例和中文教程,结合具体的代码实践,你将能够开发出功能丰富、用户体验优秀的Web...

    extjs grid.panel 项目 源码

    10. **最佳实践**:源码分析也能让我们学习到ExtJS开发的最佳实践,例如如何有效地组织代码,如何优化数据加载,以及如何保持组件的可维护性。 通过深入研究这个"extjs grid.panel 项目 源码",我们可以提升对ExtJS...

    掏钱学ExtJs完全版附全部源码- 康海涛

    康海涛的"掏钱学ExtJs完全版"可能是一份全面的学习资料,涵盖了ExtJs的基础到高级应用,包括源码分析,旨在帮助学习者深入理解和掌握这一技术。 首先,ExtJs的核心是其组件模型。它提供了大量的预定义组件,如表格...

    extJS3.1源码及demo

    通过下载并研究"ext-3.1.0"这个压缩包中的源码和示例,开发者不仅可以学习到ExtJS的基本用法,还能深入理解其内部机制,这对于提升JavaScript开发技能和扩展自定义功能非常有帮助。不过需要注意,随着技术的发展,...

    基于ExtJS5的后台管理系统案例 - 源码

    ExtJS5是一款强大的JavaScript框架,主要用于构建富客户端的Web应用程序,尤其在开发复杂的后台管理系统时,它的优势尤为显著。...案例中的源码分析和实践将加深对框架的理解,为后续的Web开发工作打下坚实基础。

    ExtJS4.0-WEB开发项目源代码

    在“ExtJS4.0-WEB开发项目源代码”这个资源中,你将有机会接触到基于ExtJS 4.0版本的项目实例,这对于学习和理解ExtJS的应用开发是非常有价值的。 首先,让我们深入了解ExtJS 4.0的关键特性: 1. **组件化**:...

    Ajax框架ExtJS3.0源代码

    深入研究"ext-src"中的源码,不仅可以帮助开发者理解ExtJS3.0的工作原理,还能学习到面向对象的JavaScript编程技巧,以及如何构建可维护、可扩展的大型前端项目。同时,对比不同版本的源码变化,也能洞察框架的发展...

    深入浅出ExtJS随书源码--EXTJS2.0

    "深入浅出ExtJS随书源码--EXTJS2.0"是针对ExtJS 2.0版本的学习资源,通常与一本相关书籍配套,帮助读者通过实际代码加深对ExtJS的理解。 源码分析: 1. **组件系统**:ExtJS的核心是其组件模型,其中包括各种可...

    基于ExtJS开发的酒店管理系统源码

    总之,这个基于ExtJS的酒店管理系统源码提供了一个实际的应用示例,对于学习和实践Web应用开发,特别是ExtJS框架的运用,具有很高的参考价值。通过深入研究和理解源码,开发者不仅可以提升技术能力,也能为自己的...

    轻松搞定ExtJs_pdf及源码

    6. **源码分析**:可能包含对ExtJS源码的解读,帮助开发者了解其内部工作原理,提高问题排查和扩展能力。 源码文件《源码.rar》则可能是配套的示例代码,包含了各种ExtJS应用实例,这些实例可能对应PDF文档中的各个...

    SSH整合extjs开发的进销存系统

    SSH整合ExtJS开发的进销存系统是一种基于Java技术...系统的可扩展性和维护性也得到了保障,因为SSH的分层架构和模块化设计使得代码易于管理和升级。总的来说,这种技术组合在现代企业信息化建设中有着广泛的应用价值。

    EXTJS工程项目

    EXTJS的源码分析可以帮助我们理解如何使用EXTJS构建复杂的用户界面,学习其组件的配置和事件处理。例如,我们可以通过查看`GridPanel`(数据表格)的配置来学习如何展示和操作数据;通过研究`FormPanel`(表单)来...

    extjs框架及教程

    描述中的"ext包再解压就是相关js代码和实例"意味着压缩包内包含EXTJS框架的源代码以及一系列示例代码,这些实例是学习EXTJS的重要资源。通过分析和运行这些示例,开发者可以快速理解和掌握EXTJS的API用法,了解如何...

    ExtJS-4.2.2-gpl.rar

    2. **源码分析** "ext-4.2.2-gpl"目录下的源码可以供开发者深入理解ExtJS的工作原理。通过阅读源码,开发者可以学习到如何组织和构建复杂的JavaScript应用,以及如何扩展和定制现有的组件。这对于想要进行性能优化...

    ExtJS 7.4 SDK trial

    此外,示例代码和教程也是学习ExtJS的重要资源。 8. **测试版**: 作为试验版,这个SDK可能包含一些预发布特性,开发者可以提前试用并提供反馈,但可能不建议在生产环境中直接使用。 9. **应用场景**: ExtJS广泛...

    酒店管理系统(ExtJs)源码

    【酒店管理系统(ExtJs)源码】是一款基于前端框架...总的来说,【酒店管理系统(ExtJs)源码】是一个结合了ExtJs前端技术与SQLSERVER数据库管理的综合应用,展示了如何通过现代Web技术构建高效、易用且可扩展的业务系统。

Global site tag (gtag.js) - Google Analytics