继承可以达到代码的复用,利于维护和扩展。

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 实现多继承的更多相关文章

  1. [原]sencha touch之表单(login demo)

    现在来说说sencha touch中的表单,举个简单的login的例子,相关的说明我都放在了注释中,看下面代码 Ext.application({ id:'itKingApp', launch:fun ...

  2. sencha touch 类的使用

    sencha touch 有一套自己的类机制,可以以面向对象的方式去写代码,封装业务逻辑,sencha touch 的组件.插件.api等都建立在这一套类机制的上面 在实际开发中,我们需要遵循这一套机 ...

  3. sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式

    大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...

  4. sencha touch 入门系列 (九)sencha touch 视图组件简介

    对于一个普通用户来说,你的项目就是一组简单的视图集合,用户直接通过跟视图进行交互来操作你的应用,对于一个开发人员来说,视图是一个项目的入口,虽然大部分时候最有价值的部分是在model层和control ...

  5. sencha touch 入门系列 (七)sencha touch 类系统讲解(上)

    在mvc结构的基础上,sencha touch又使用了sencha公司为extjs4开发出来的类系统,在面向对象的编程语言中,类是对对象的定义,它描述了对象所包含的大量属性和方法. 跟面向对象语言类似 ...

  6. 解读sencha touch移动框架的核心架构(一)

    sencha的前身就是Extjs了,sencha 框架是世界上第一个基于HTML5的Mobile App框架 那么何谓框架,传统软件工程对于库和框架的区分主要着眼于对应用运行流程的控制权,框架提供架构 ...

  7. sencha touch api 使用指南

    本文主要讲解如何使用sencha touch的api以及如何查看api中官方示例源码 前期准备 1.sdk 下载地址:http://www.sencha.com/products/touch/down ...

  8. 【翻译】在Ext JS和Sencha Touch中创建自己定义布局

    原文:Creating Custom Layouts in Ext JS and Sencha Touch 布局系统是Sencha框架中最强大和最独特的一部分.布局会处理应用程序中每个组件的大小和位置 ...

  9. 选择移动web开发框架研究——有mui、frozenui以及Sencha Touch等

    纯粹的总结一下移动web开发框架,移动 web开发框架有jQuery Mobile .Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家 ...

随机推荐

  1. python变量和简单的数据类型

    1.运行hello_world.py时发生的情况 运行hello_world.py时,Python都做了些什么呢?实际上,即便是运行简单的程序,Python所做的工作也相当多: #!/usr/bin/ ...

  2. python版本selenium定位方式(不止八种哦)

    除了大家熟知的8种定位方式之外 1.id定位:find_element_by_id(self, id_)2.name定位:find_element_by_name(self, name)3.class ...

  3. (zxing.net)一维码Codabar的简介、实现与解码

    一.简介 一维码Codabar:由4条黑色线条,3条白色线条,合计7条线条所组成,每一个字元与字元之间有一间隙Gap做区隔. 条形码Codabar包含21个字元: (1).10个数字0~9; (2). ...

  4. BitArray简单例子

    using System; using System.Collections; using System.Text; namespace TestConsole { class Program { s ...

  5. MVC dropdownlist 下拉框

    List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem() ...

  6. maven-compiler-plugin 版本错误解决方法

    项目执行Maven build后出现WARNING提示.报如信息如下,根据报错信息猜测是maven-compiler-plugin的版本信息问题 [WARNING] [WARNING] Some pr ...

  7. 2.ECMAScript 5.0

    JS的引入方式 内接式 <script type="text/javascript"> </script> 外接式 <!--相当于引入了某个模块--& ...

  8. IO模型《四》多路复用IO

    多路复用IO(IO multiplexing) IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了.有些地方也称这种IO方式为事件驱动IO (ev ...

  9. 使用私有git仓库备份服务器脚本和配置文件

    1. 创建私有git仓库 服务器端配置: # 安装 git yum -y install git # 创建 git 用户 useradd git # 创建私有仓库数据存储目录 mkdir /git_b ...

  10. 2016级算法第三次上机-C.AlvinZH的奇幻猜想——三次方

    905 AlvinZH的奇幻猜想--三次方 思路 中等题.题意简单,题目说得简单,把一个数分成多个立方数的和,问最小立方数个数. 脑子转得快的马上想到贪心,从最近的三次方数往下减,反正有1^3在最后撑 ...