本章仅仅介绍Ext中类的基础知识,一些高级知识会在以后的章节中穿插介绍

注:由于截图上传较为麻烦,且图片占用篇幅较大,所以在以后的文章中如果不是特别必要,将不会插入很多图片,最终的执行结果请大家自行验证。

1、定义一个类

//使用Ext定义一个类
Ext.define('Person',{name:'jaune',age:18
});
//创建一个类
var person = new Person();
console.log(person);

从打出来的结果中可以看出我们定义的属性已经出现在了类中。这是Ext中最简单的类的定义方式

注意上图中的superclass,我们用Ext定义的类如果没有指明继承自哪个类,默认都是继承自Ext.Base,这个类就相当于Java中的Object类,是Ext所有类的基类。如何继承其他类会在下面讲到。

2、Ext中构造函数

Ext.define('Person',{name:'jaune',age:18,constructor:function(config){Ext.apply(this,config);}
});
//创建一个类
var person = new Person({name:'petty'
});
console.log(person);

这里的apply与第二章中的apply类似,Ext同样有applyIf函数,用法与第二章中的applyIf类似,第二章中的apply和applyIf函数就是仿照的Ext中的这两个函数写的.。如果大家有兴趣查看源码的话可以再Ext的帮助中找到Ext.apply方法然后点击后面的“view source”查看其源码。

3、类的继承

//使用Ext定义一个类
Ext.define('Person',{name:'jaune',age:18,constructor:function(config){Ext.apply(this,config);}
});//类的继承
Ext.define('Man',{extend:'Person',sex:'Male',constructor:function(config){//这里是为了确保创建的对象中的sex属性是Male,如果config中有sex属性就删除这个属性if(config.hasOwnProperty('sex')){delete config.sex;}/** callParent的意思就是调用父类同名的方法,这里用作继承父类构造方法* 比如父类中有一个toString方法,在子类的toString方法中调用this.callParent()方法,则会执行父类中的toString方法* 这个大家可以亲自验证*/this.callParent([config]);},//这个方法是为了方便打印toString:function(){return {name:this.name,age:this.age,sex:this.sex};}
});var man = new Man({name:'tom',sex:'Female'
});
console.log(man.toString());
/** 打印结果如下* Object {name: "tom", age: 18, sex: "Male"} */

man对象创建的过程是,new对象时将config传入Man类的构造函数中,然后Man的构造函数将sex属性过滤掉,然后调用父类的构造方法将config中的属性赋予man对象

4、类的静态属性和静态方法

/*** statics 可以包含类的静态和静态方法,但是不能被子类继承* inheritableStatics 与statics类似但是可以被子类继承*/Ext.define('DateUtil',{inheritableStatics:{currentDate:Ext.Date.format(new Date(),'Y-m-d'),getCurrentDate:function(formatStr){if(Ext.isString(formatStr)){Ext.Date.format(new Date(),formatStr);}else{return this.currentDate;}}}
});
console.log(DateUtil.currentDate);
Ext.define('TimeUtil',{extend:'DateUtil',statics:{currentTime:Ext.Date.format(new Date(),'Y-m-d H:i:s')}
});
console.log(TimeUtil.currentDate);

上面的两个类,如果DateUtil中用的是statics属性来定义静态属性和方法则TimeUtil无法继承

5、单例

在Ext中定义单例模式的类非常简单,在定义类的时候加上singleton:true 就表示要定义的类为单例,剩下的事情Ext会替你解决,只需要像定义普通类一样编码就可以了。

Ext.define('DateUtil',{singleton:true,currentDate:Ext.Date.format(new Date(),'Y-m-d'),getCurrentDate:function(formatStr){if(Ext.isString(formatStr)){Ext.Date.format(new Date(),formatStr);}else{return this.currentDate;}}
});console.log(DateUtil);

JS中的单例其实就是将类实例化,可能没有大家想的那么复杂

ExtJS教程(3)--- Ext中类的使用相关推荐

  1. 实用ExtJS教程100例-004:等待对话框Ext.MessageBox.wait

    在前面两节中,我们分别演示了ExtJS三种常用的对话框和ExtJS带有进度条的对话框.在本节内容中,我们来看看ExtJS中的等待对话框. 首先来看一个简单的例子[查看在线示例]: 这种对话框会一直滚动 ...

  2. 实用ExtJS教程100例-006:ExtJS中Window的用法示例

    在前面几个示例中,我们演示了MessageBox的各种用法,今天这篇文章将演示如何使用Window. 我们首先来创建一个窗口: var win = Ext.create("Ext.windo ...

  3. 实用ExtJS教程100例-002:MessageBox的三种用法

    在上一节中,我们用到了MessageBox,在本文中,我们将介绍一下ExtJS中常用的三种MessageBox. Ext.MessageBox.alert() 这个方法用来打开一个普通的对话框,对话框 ...

  4. EXTJS教程(2)

    本文由www.javajxw.com整理提供 要使用ExtJS,先要得到ExtJS库文件,ExtJS库文件可以到ExtJS官网下载,地址是www.extjs.com/products/gxt/down ...

  5. ExtJS教程(5)---Ext.data.Model之高级应用

    1.Model的数据验证 这里借助官方的一个例子来说Model数据验证的基本用法 Ext.define('User', {extend: 'Ext.data.Model',fields: [{ nam ...

  6. ExtJS教程(7)---Ext.data.Store中事件的应用

    为了"持之以恒",写的有点草率,随后会修正 上节说了Ext.data.Store的基本用法,以及各种场景该怎么用,这节说项Store的事件的用法 beforeload:在数据加载前 ...

  7. 实用ExtJS教程100例-009:ExtJS Form无刷新文件上传

    文件上传在Web程序开发中必不可少,ExtJS Form中有一个filefield字段,用来选择文件并上传.今天我们来演示一下如何通过filefield实现ExtJS Form无刷新的文件上传. 首先 ...

  8. ExtJs Grid 合计 [Ext | GridPanel | GridSummary]

    前言 五一期间学习Ext很痛苦也很快乐,到现在也算是小有所成,陆陆续续的开始在项目中使用,Ext的表格据统计是使用率最高的一个组件,实在是很强大,但我以为关键是很漂亮,而他本身并不支持数据的统计功能, ...

  9. Extjs 实战之 Ext.tree.TreePanel Tree无法显示

    这里使用的是 Ext.ux.tree.ColumnTree, 这是一个TreePanel的扩展类, 从Extjs下载的官方包里就包含了这个. 1. 问题描述: tree 的头部显示正常, 数据部分在F ...

最新文章

  1. SCAU RP Test —— 因式分解与组合
  2. 指纹锁就安全了?防火防盗还得防AI
  3. Antd-Design List渲染列中Button 点击事件 传递参数
  4. c语言中循环结构的作用,C语言循环结构知识点
  5. 语法转换_语法 | 句型转换之肯定句变否定句
  6. Leetcode 6.Z 字形变换 (每日一题 20210630)
  7. PHP中MySQL操作相关方法
  8. Versions maven plugin 修改版本
  9. 历史快照_实用脚本--合理估算oracle数据库及数据库对象历史增长情况
  10. 机器学习相关从业者如何兼顾理论与工程能力
  11. Mac安装与配置idea及tomcat
  12. 实战BootStrap:利用BootStrap制作全平台响应式站点
  13. python 爬虫代码实例
  14. 九度-题目1103 二次方程计算器
  15. 十三、直接、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址
  16. python聊天小程序支持私聊和多人_Python 使用 django 框架实现多人在线匿名聊天的小程序...
  17. iphone 中的大小和像素问题
  18. 工作笔记——微信支付开发相关知识整理
  19. Angular4 第三章(中) 重定向路由,子路由,辅助路由
  20. 英特尔® 驱动程序和支持助理 (intel-driver-support-assistant) 安装后无法扫描电脑硬件驱动解决

热门文章

  1. 比亚迪“亮刀”、宁德时代“狂奔”,动力电池市场的巨头混战几时休?
  2. 计算机考试水平划分,计算机水平等级划分
  3. el-upload回显细节--没有图片数据返回的时候每点击一次添加多了一个空白图片
  4. 微软“黑屏”原来是纸老虎
  5. 区块链游戏,不懂你别玩!
  6. 基于matlab的神经网络设计,神经网络模型matlab例子
  7. 【我是初学者】关于获取配置文件.properties的常见三种方式--只是常见的方式,欢迎牛神来加瓦
  8. 计算机流体力学软件基础及工程应用,流体力学及其工程应用(英文版·原书第10版)2013年版...
  9. 改进我的人人农场收菜外挂
  10. FJC-330直流系统交流窜电测记告警装置在变电站的应用