这两天遇到个问题,两个对象会共用一份数据,
如下:
Ext.extend(Nts.Window.RaaInterfaceDetailWindow,Ext.Window,
{
interfaceMap : {}
})
这里定义了一个对象,继承自window,它有一个属性interfaceMap且直接给了初始值
以前看过extjs 的继承,可仅仅只是关注了它的原理,没有去想它的属性是怎么给的,今天一看它对属性的给值吓我一跳
Ext.override(sb, overrides),sb相当于Nts.Window.RaaInterfaceDetailWindow,overrides相当于{
interfaceMap : {}
},
也就是说overrides会添加到Nts.Window.RaaInterfaceDetailWindow的prototype中去,这会倒致这里的
interfaceMap : {}相当于全局属性了.
所以上面的定义方式的问题就大了,需要改成这样:
Ext.extend(Nts.Window.RaaInterfaceDetailWindow,Ext.Window,
{
interfaceMap : null,
initComponent : function()
{
this.interfaceMap = {};
}
})
这样new出来的对象才不会产生共用属性的问题,千万不要将要释放的资源在属性中初始化
上面的说法有是错的,资源无法释放是由于使用产生的,不是定义产生的:
Ext.extend(Nts.Window.RaaInterfaceDetailWindow,Ext.Window,
{
interfaceMap : {},
})在prototype中有个属性叫interfaceMap,它的值为{}
与
Ext.extend(Nts.Window.RaaInterfaceDetailWindow,Ext.Window,
{
interfaceMap : null,
initComponent : function()
{
this.interfaceMap = {};
}
})prototype中有interfaceMap=null,new对象时,对象本身的interfaceMap={}会覆盖prototype中的interfaceMap
this.interfaceMap = {};相当于新的对象的interfaceMap 属性覆盖了prototype中的属性,这样每个对象中的interfaceMap 都是不同的
那么是什么原因倒致prototype中的interfaceMap有值了呢?
如果没有使用this.interfaceMap={}给值,而是直接this.interfaceMap['a']='a'会怎么样?这个时候对象本身是没有interfaceMap属性的,它会跑到prototype中找到interfaceMap,并给它的属性给值,这样所有对象都会使用这个全局的interfaceMap
分享到:
相关推荐
目的:该示例非常详细注释说明Ext的面向对象的编程方式,使用继承,然后重写父类的方法,以及注册自定义事件说明Ext框架是事件驱动的框架编程。 阅读对象:本中心学习Ext面向对象编程的人员 阅读条件:掌握OO的思路...
ext继承重写,达到了很高的水平。使用了很多方式,等等。
EXT dojochina Ext类继承.rar EXT dojochina Ext类继承.rar
NULL 博文链接:https://hanxs8866-163-com.iteye.com/blog/1174152
1. Ext.form.NumberField 2. Ext.form.TextArea 3. Ext.form.TriggerField 4. Ext.form.DateField 5. Ext.form.ComboBox 6. Ext.form.TimeField
Ext、Ext4中各个组件、属性、方法详解,一个不漏;Ext学习入门及参考最好的资料
Ext.Panel API翻译 -------Window属性
ExtJS是不错的JS框架,这份材料是对继承开发的分析
EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT中文EXT...
EXT dojochina Ext类实例属性.rar EXT dojochina Ext类实例属性.rar
很全,很强大的Ext常用属性总结让你写extjs代码时游刃有余的感觉。
asdext extext extext extext extext extext extext extext extext extext extext extext extext extext ext
Extjs & Ext.net中的一些属性
ext资料 ext资料 ext资料 ext资料 ext资料
ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ext使用ex
ext3.0ext3.0ext3.0ext3.0ext3.0ext3.0
NULL 博文链接:https://anniexuguoan.iteye.com/blog/767813
ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记ext2.0笔记...
ext2文件扩展属性讲解[借鉴].pdf