Ext.extend 注意config中定义的数组 导致对象共用的问题
2015-10-13 15:01
267 查看
现象:
如果加到constructor中 或者 如果把数组改为一个基本属性 效果又会怎样
结论: 由于Ext继承是直接使用的prototype 所以定义在config中的属性都是共有的 当进行操作的时候 如果使用this.tabVisible[] 实际上操作的是公有(我理解为static)的数组,所以这时候tab1.tabVisible===tab2.tabVisible
如果在constructor中定义,则是为每个对象分配了一个tabVisible[],互不影响
如果使用基本属性 prototype中会有这个属性定义, 但是如果对某个对象 比如tab1中写this.tabVisible=true,那么实际上就会单独为tab1分配出一个对象属性,与prototype以及tab2分离
MyTabPanel = Ext.extend(Ext.TabPanel, { tabVisible : [false], constructor : function(config) { //this.tabVisible = []; }, changeVisible : function(b){ this.tabVisible[0]=true; } }); var tab1 = new MyTabPanel(); var tab2 = new MyTabPanel(); tab1.changeVisible(true); //tab2.tabVisible=?
如果加到constructor中 或者 如果把数组改为一个基本属性 效果又会怎样
结论: 由于Ext继承是直接使用的prototype 所以定义在config中的属性都是共有的 当进行操作的时候 如果使用this.tabVisible[] 实际上操作的是公有(我理解为static)的数组,所以这时候tab1.tabVisible===tab2.tabVisible
如果在constructor中定义,则是为每个对象分配了一个tabVisible[],互不影响
如果使用基本属性 prototype中会有这个属性定义, 但是如果对某个对象 比如tab1中写this.tabVisible=true,那么实际上就会单独为tab1分配出一个对象属性,与prototype以及tab2分离
相关文章推荐
- 转: dom4j中使用xpath解析带命名空间的xml文件,取不到节点的解决办法
- win7 Eclipse Indigo Courier New 字体问题
- Windows平台下使用Jenkins自动发布Unity之Android程序与补丁
- ssh crack
- 把项目从Maven迁移到Gradle
- sql记录2
- Android 自定义Prodvider
- WebService到底是什么?
- 简单但比较高效的解决:随机获取N个数字,这些数字在指定的范围内,获取的数字不能重复
- 树形结构的数据库表Schema设计
- JNDI Java Name and Directory Interface
- 图解TCP/IP之概述
- AndroidStudio常用功能和技巧
- Eclipse刷新后崩溃,自动关闭
- linux ping命令详解
- tomcat自动关闭JDK异常退出 EXCEPTION_ACCESS_VIOLATION
- IE6,7 表格display:none导致表格错乱的问题
- ant脚本学习
- IE6offsetWidth与offsetHeight为0的问题
- composer 安装