- 浏览: 756025 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Ripin_Yan:
写的挺透彻
session与cookie的区别? -
1045565111:
谢谢,运行起来了,非常不错~~~
EXTJS动态树的实现 -
hlxhf5000:
找了半天,机会都没有全套的下载
ExtJs视频教程集锦 -
slysuccess:
讲解的非常好!以前还不是太明白,现在终于明白了!谢谢博主
ExtJs中关于grid和store的应用分析(二) -
yixiandave:
怎么看都蛋疼啊。。
js继承的实现
ext中有关继承的实现的关键代码如下:(Ext.js中)
extend:
override:
Ext.apply:
最关键的是extend部分的代码,它使得如果子类没有constructor(或者说子类的constructor就是个默认的Object),那么当new一个子类的时候,会调用他的父类的构造器,因此,我们看到Panel是直接通过Ext.Panel = Ext.extend(Ext.Contailer,{...});的方式直接定义的,在new Panel({...})的时候就能层层进去一直到有构造器的超类Ext.Component,并执行这个超类的构造器里的代码。而Ext.Component的构造器代码中有this.initComponet()方法,这样就能够调用子类的initComponent()方法,而子类的initComponent()方法中都有 子类名.superclass.initComponent();这样的代码来调用父类的init方法,这样我们在new一个子类的后就能够直接初始化了所有的信息。
extend中最关键的一句话是:
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
它表示了执行父类构造器的原因,
new对象时,就是执行这个function(){sp.apply(this, arguments);}方法,
sp.applay()执行时,父类构造器就会马上被执行。
比较并执行下面的代码就可以理解了上面说的内容了:
1、子类有构造器的情况
2、子类没有构造器的情况
extend:
extend : function(){ // inline overrides var io = function(o){ for(var m in o){ this[m] = o[m]; } }; var oc = Object.prototype.constructor; return function(sb, sp, overrides){ if(typeof sp == 'object'){ overrides = sp; sp = sb; sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);}; } var F = function(){}, sbp, spp = sp.prototype; F.prototype = spp; sbp = sb.prototype = new F(); sbp.constructor=sb; sb.superclass=spp; if(spp.constructor == oc){ spp.constructor=sp; } sb.override = function(o){ Ext.override(sb, o); }; sbp.override = io; Ext.override(sb, overrides); sb.extend = function(o){Ext.extend(sb, o);}; return sb; }; }()
override:
override : function(origclass, overrides){ if(overrides){ var p = origclass.prototype; for(var method in overrides){ p[method] = overrides[method]; } } }
Ext.apply:
Ext.apply = function(o, c, defaults){ if(defaults){ // no "this" reference for friendly out of scope calls Ext.apply(o, defaults); } if(o && c && typeof c == 'object'){ for(var p in c){ o[p] = c[p]; } } return o; };
最关键的是extend部分的代码,它使得如果子类没有constructor(或者说子类的constructor就是个默认的Object),那么当new一个子类的时候,会调用他的父类的构造器,因此,我们看到Panel是直接通过Ext.Panel = Ext.extend(Ext.Contailer,{...});的方式直接定义的,在new Panel({...})的时候就能层层进去一直到有构造器的超类Ext.Component,并执行这个超类的构造器里的代码。而Ext.Component的构造器代码中有this.initComponet()方法,这样就能够调用子类的initComponent()方法,而子类的initComponent()方法中都有 子类名.superclass.initComponent();这样的代码来调用父类的init方法,这样我们在new一个子类的后就能够直接初始化了所有的信息。
extend中最关键的一句话是:
sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
它表示了执行父类构造器的原因,
new对象时,就是执行这个function(){sp.apply(this, arguments);}方法,
sp.applay()执行时,父类构造器就会马上被执行。
比较并执行下面的代码就可以理解了上面说的内容了:
1、子类有构造器的情况
Parent = function() { alert("parent"); }; Child = function() { alert("child"); }; Ext.extend(Child, Parent, { init : function() { alert("child's init function"); } }); var cl = new Child();// 输出结果:child cl.init();// 输出结果:child's init function
2、子类没有构造器的情况
Parent = function() { alert("parent"); }; Child = Ext.extend(Parent, { init : function() { alert("child's init function"); } }); var cl = new Child();// 输出结果:parent cl.init();// 输出结果:child's init function
评论
4 楼
zlssy
2008-12-13
顶一个!
经典
深刻
经典
深刻
3 楼
slmdyk
2008-08-13
上面说的没看明白,可是例子看明白了!
所以还是有点懵懂!
不过老师的所有文章我都看了,除非是老师不给我权限的
所以还是有点懵懂!
不过老师的所有文章我都看了,除非是老师不给我权限的
2 楼
yahaitt
2008-07-15
呵呵,谢谢支持:)
1 楼
baoyaer
2008-07-15
lz你太厉害了,总结的也非常深刻,有些类似我的做事风格,抓住最低层的一些东西进行剖析,你的每篇文章我都看了,总结的非常好,谢谢
发表评论
-
关于Ext2.2中调用iframe,无法打开 Internet 站点
2009-02-26 13:40 2923在 EXT2.0运行正常的程序,调换 EXT2.2 的脚本之 ... -
对applyTo和renderTo的理解和思考
2008-10-06 15:54 17984extjs中经常会用到renderTo ... -
ExtJs视频教程集锦
2008-09-03 12:55 25848《ExtJs视频教程》全套已全面出炉,欢迎大家关注!目录如下: ... -
ExtJs中关于grid和store的应用分析(三)
2008-08-29 16:01 5554第三部分:解析器与数 ... -
ExtJs中关于grid和store的应用分析(二)
2008-08-29 13:45 9575第二部分:Store的核心阐释 Store即数据存储器,主 ... -
ExtJs中关于grid和store的应用分析(一)
2008-08-29 12:35 11027第一部分:阐述grid与st ... -
应用ExtJs时解决乱码的方法
2008-08-22 17:54 9949一般情况下,项目采用了UTF-8的字符集格式,那么所有的js文 ... -
序号结合分页功能的实现
2008-08-15 11:18 3738序号结合分页显示:一 ... -
ExtJs想入门的请进-解读API
2008-07-22 10:49 9131如果你对EXT有兴趣但不知道如何下手,如果你有了API但不知道 ... -
关于动态树的完整示例代码下载
2008-07-14 15:57 7585应网友反馈,现提供动态树的完整示例代码工程,以方便大家学习和交 ... -
ExtJs中关于mask()的应用说明
2008-06-30 10:25 12181Ext.Msg.alert( String title, St ... -
EXTJS动态树的实现
2008-06-25 00:27 28723EXTJS动态树的实现举例 一、描述:通过dwr实现JS与后台 ... -
透析Extjs源码之结合API写事件响应函数
2008-05-16 14:34 3900我在一个论坛看到EXT传递参数的问题,觉得很多学EXT的人都 ... -
透析Extjs源码之layout(二)FormPanel与FormLayout的关系
2008-05-16 10:38 6146理解了layout之后,再看看FormPanel源码,发现它指 ... -
透析Extjs源码之layout(一)layout的实现
2008-05-16 09:48 58901、配置选项layout什么时候可用? 只有Ext.Conta ... -
透析Extjs的Ext.js源码(四)去理解Ext.js
2008-05-14 18:00 2531//先定义匿名方法,第一个括号对里的,必须要有这个括号对, ... -
透析Extjs的Ext.js源码(三)扩展
2008-05-14 18:00 2403if(!Person.extend){//若extend属 ... -
透析Extjs的Ext.js源码(二)能在定义时就能执行的方法的写法 function(){...}
2008-05-14 17:59 3985/** * 第二部分:能在 ... -
透析Extjs的Ext.js源码(一)对象属性的添加和设置
2008-05-14 17:57 5710/** * 分析Ext.js */ /** ... -
extjs视频教程系列之-第一讲:ExtJS介绍及应用举例
2008-05-06 15:13 8138地址: http://bbs.langsin.com/view ...
相关推荐
extjs多选下拉框,Ext.ux.form.LovCombo,extjs 以修复多选下拉框火狐下取不到值的问题,火狐下div不显示背景色的问题
Extjs4 comboboxTree下拉树型菜单,完美支持多选、单选,绝对好用。来源于网络,稍作修改。
基于extjs form表单的项目源码
ExtJs charts.swf源码 2.6和2.8
extjs-basex.js extjs-basex.js extjs-basex.js
代码如下: Ext.onReady(function() { Ext.Msg.alert(‘提示’, ‘逗号分隔参数列表’); //这种方式非常常见的 ...接下来认识一下Ext.MessageBox Ext.MessageBox是一个工具类,他继承自Obiect对象,用来生成各种
Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发实例宝典光盘源码Ext JS源码分析与开发...
关于这个原因有很多种,我只说下我遇到的 我这样 写Store来复用的 代码如下: DocStore = Ext.extend(Ext.data.Store,{ initComponent:function(){ this.proxy = new Ext.data.HttpProxy({url:this.url}); this....
NULL 博文链接:https://maoyi606.iteye.com/blog/1782825
NULL 博文链接:https://sonckchi.iteye.com/blog/1958861
14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1 定义命名空间 14.2.2 使用xtype 14.3 用户扩展和插件 14.3.1 编写自定义用户扩展 14.3.2 常用插件UploadDialog 14.3.3 常用插件...
主要介绍了ExtJs的Ext.Ajax.request实现waitMsg等待提示效果,需要的朋友可以参考下
14.1 利用Ext.extend实现继承 14.2 与ExtJS扩展相关的预备知识 14.2.1 定义命名空间 14.2.2 使用xtype 14.3 用户扩展和插件 14.3.1 编写自定义用户扩展 14.3.2 常用插件UploadDialog 14.3.3 常用插件...
Ext+JS源码分析与开发实例宝典.pdf,清晰完整版。彭仁夔 编著,2010.1 。该书共6个part,全部下载才能RAR解压。所有下载链接去这里找http://stephegn.download.csdn.net/ 全面剖析Ext JS 3.0的架构原理 透彻体悟...
[深入浅出Ext.JS].徐会生等.扫描版.一本比较ExtJS入门级教材。对学习EXTJS有帮助。
extjs 可编辑的表格树,每个单元格自定义编辑组件,可以自适应列宽,只有源码与例子,运行实例要修改路径,不然图片不能显示,注意etree.jsp的js引入路径 支持Ext2.x以上版本 如运行不了EmailTo : codeme9@gmail....
Ext Extjs 禁止文本和日期编辑 ExtJS中动态设置TextField的readOnly属性
EXTjs的上传组件
ExtJS Ext ExtJavascript Javascript
如何给Ext.panel增加一个背景图片