sencha touch extend 单继承 和 mixins 实现多继承
继承可以达到代码的复用,利于维护和扩展。
sencha touch 中可以通过 extend 实现单继承,通过 mixins 实现多继承。
mixins 也很像实现接口,不过这些接口的方法已经实现了,不用自己写了。当然也可以复写基类的方法。
extend 继承
Ext.define('Person', {
constructor : function(name, age) {
this.name = name;
this.age = age;
},
walk : function() {
console.log('Person walk');
},
sleep : function() {
console.log('Person sleep');
}
});
Ext.define('Stu', {
extend : 'Person',
constructor : function(name, age, city) {
this.city = city;
// 调用父类构造器
// 因为底层调用的是 superMethod.apply , 所以参数以数组的形式传递
this.callParent([ name, age ]);
},
walk : function() {
console.log('Stu walk');
// 调用父类方法
this.callParent();
}
});
var s = Ext.create('Stu', 'leslie', 25, 'beijing');
console.log(s);
console.log(s.superclass);
console.log(s.name);
console.log(s.age);
console.log(s.city);
s.walk();
// s.superclass.walk();
s.sleep();
// Log 如下
// [Log] Object
// [Log] Object
// [Log] leslie
// [Log] 25
// [Log] beijing
// [Log] Stu walk
// [Log] Person walk
// [Log] Person sleep
2 mixins 多继承
Ext.define('Person', {
constructor : function(name, age) {
this.name = name;
this.age = age;
},
walk : function() {
console.log('Person walk');
},
sleep : function() {
console.log('Person sleep');
}
});
Ext.define('CanWalk', {
walk : function() {
console.log('can walk');
}
});
Ext.define('CanSing', {
sing : function() {
console.log('can sing');
}
});
Ext.define('Stu', {
extend : 'Person',
// 混入 CanWalk CanSing
mixins : [ 'CanWalk', 'CanSing' ],
// 也可为混入的类重新指定一个 key
// 默认为类名
// 这样当类名很长时:如 Enway.Leslie.CanWalk
// 不用这样引用 this.mixins['Enway.Leslie.CanWalk']
// 而是直接通过 this.mixins.canWalk 引用
// mixins : {
// canWalk : 'Enway.Leslie.CanWalk',
// canSing : 'Enway.Leslie.CanSing'
// },
constructor : function(name, age, city) {
this.city = city;
// 调用父类构造器
// 因为底层调用的是 superMethod.apply , 所以参数以数组的形式传递
this.callParent([ name, age ]);
},
walk : function() {
console.log('Stu walk');
// 调用父类方法
// this.callParent();
// 调用 CanWalk 的 walk 方法
this.mixins.CanWalk.walk();
// 调用 CanSing 的 sing 方法
this.mixins.CanSing.sing();
}
});
var s = Ext.create('Stu', 'leslie', 25, 'beijing');
console.log(s);
console.log(s.superclass);
console.log(s.name);
console.log(s.age);
console.log(s.city);
s.walk();
// s.superclass.walk();
s.sleep();
// Log 如下
// [Log] Object
// [Log] Object
// [Log] leslie
// [Log] 25
// [Log] beijing
// [Log] Stu walk
// [Log] can walk
// [Log] can sing
// [Log] Person sleep
sencha touch extend 单继承 和 mixins 实现多继承的更多相关文章
- [原]sencha touch之表单(login demo)
现在来说说sencha touch中的表单,举个简单的login的例子,相关的说明我都放在了注释中,看下面代码 Ext.application({ id:'itKingApp', launch:fun ...
- sencha touch 类的使用
sencha touch 有一套自己的类机制,可以以面向对象的方式去写代码,封装业务逻辑,sencha touch 的组件.插件.api等都建立在这一套类机制的上面 在实际开发中,我们需要遵循这一套机 ...
- sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式
大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...
- sencha touch 入门系列 (九)sencha touch 视图组件简介
对于一个普通用户来说,你的项目就是一组简单的视图集合,用户直接通过跟视图进行交互来操作你的应用,对于一个开发人员来说,视图是一个项目的入口,虽然大部分时候最有价值的部分是在model层和control ...
- sencha touch 入门系列 (七)sencha touch 类系统讲解(上)
在mvc结构的基础上,sencha touch又使用了sencha公司为extjs4开发出来的类系统,在面向对象的编程语言中,类是对对象的定义,它描述了对象所包含的大量属性和方法. 跟面向对象语言类似 ...
- 解读sencha touch移动框架的核心架构(一)
sencha的前身就是Extjs了,sencha 框架是世界上第一个基于HTML5的Mobile App框架 那么何谓框架,传统软件工程对于库和框架的区分主要着眼于对应用运行流程的控制权,框架提供架构 ...
- sencha touch api 使用指南
本文主要讲解如何使用sencha touch的api以及如何查看api中官方示例源码 前期准备 1.sdk 下载地址:http://www.sencha.com/products/touch/down ...
- 【翻译】在Ext JS和Sencha Touch中创建自己定义布局
原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...
- 选择移动web开发框架研究——有mui、frozenui以及Sencha Touch等
纯粹的总结一下移动web开发框架,移动 web开发框架有jQuery Mobile .Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家 ...
随机推荐
- Mysql简介与编译安装
==========MYSQL工作原理图: 1>数据库简介:简单的说数据库(database)就是一个存储数据的仓库,它将数据按照特定的规律存储到磁盘上,通过数据库管理系统,能够有效的管理存储在 ...
- Replication--修改复制代理配置来查看代理运行情况
1>在复制监视器中选中订阅右键 2>选择代理配置文件 3>将代理配置文件设置为”详细历史记录代理配置文件“,确定以保存 4>重启代理 5>代理运行一段时间后,重启代理 6 ...
- c#设计模式系类:亨元模式
一.引言 在软件开发过程中,如果我们需要重复使用某个对象的时候,如果我们重复地使用new创建这个对象的话,这样我们在内存就需要多次去申请内存空间了,这样可能出现内存使用越来越多的情况,这样的问题是非常 ...
- BZOJ4710 分特产
题目链接:戳我 容斥题. 设\(f[i]\)表示至多有i个人能够分到(也就是至少n-i个人分不到)的方案数 \(f[i]=\prod_{j=1}^mC_{a[j]+i-1}^i-1\) a[j]表示的 ...
- OI树上问题 简单学习笔记
判断链 每个点的度数不超过2 判断树 n个点,n-1条边 每两个点之间的路径唯一 多叉树转换成二叉树 第一个孩子作为左孩子,第一个孩子的兄弟作为它的右孩子. 树的重心 树上一点,满足删除该点时,树内剩 ...
- Binder学习笔记(一)
网上看了很多关于binder的文章,但我还是想把自己的心路历程记录下来,有些是跟着别人的脚步领略险峻风景,有些则是自己只身探入代码深处打捞出的收获.我不确定是否全部融会贯通,更担心一两个月后会完全不记 ...
- python3的enumerate函数
enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中.
- python 控制台输出带颜色的文字的方法
python_控制台输出带颜色的文字方法 在python开发的过程中,经常会遇到需要打印各种信息.海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性.这时候,如果能给重要的信 ...
- ModuleNotFoundError: No module named 'Crypto'
pycrypto已经舍弃了使用pycryptodome,pip uninstall pycrypto,然后安装pycryptodome,pip install pycryptodome 可能还需要改名 ...
- StringBuffer类和String类的区别
StringBuffer是使用缓冲区的,本身也是操作字符串的,但与String类不同,String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改 ...