Extjs 之 initComponent 和 constructor的区别

 我来答
野人无事不言L
2016-09-24 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:143.5亿
展开全部
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 来讨论的, 笔者觉得作用不是很大。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式