Extjs 之 initComponent 和 constructor的区别
Extjs 提供的组件还是挺丰富的, 但是有时候需求更丰富。
当Extjs 原生的组件无法实现我们的要求的时候, 就需要扩展Extjs 的组件实现自制组件了。
除了这种使用状况, 有时候对于一些相同却有使用很多的配置, 可能像把它独立出来,单独设为一种组件供大家调用, 节省开发时间和提高代码重用度。
initComponent 和 constructor 就是Extjs 提供用来实现继承和扩展的方式。
1. initComponent这个方法是在Ext.Component的构造函数(constructor)中调用的,只有直接或间接继承自 Ext.Component的类才会在constructor里调用initComponent方法
看一下 Ext.AbstractComponent的源码文件 src/AbstractComponent.js
在 constructor方法中调用了initComponent
2.
1)自定义类中的 initComponent 函数中必须调用 callParent();否则 调用者无法初始化这个对象
2)针对button 这样的扩展组件来说,自定义类中的 constructor ,需要调用callParent( arguments);否则 调用者无法初始化这个对象
[html] view plaincopyprint?
this.callParent(arguments);
this.callParent(arguments);
这里的arguments 是需要的。
(在Extjs 4 之前的版本中, 可能会看到比较多的XXX.superclass.constructor.call 写法)
sencha 的官网中有一篇针对这两个区别的讨论:
http://www.sencha.com/forum/showthread.php?47210-constructor-Vs-initComponent
不过语法是基于Extjs 3 来讨论的, 笔者觉得作用不是很大。
从某种功能上说是一样的
相同点:都可以执行某些方法,处理事件等
不同点: listeners是监听的意思,比如tabchange改变时,触发这个监听事件
on 有绑定事件的意思,比如绑定click,itemclick等等
如还不明白,再HI我
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!