Ext JS 4 老特征:statics 静态的变量和方法
l 一、静态的变量和静态的方法 【译文原创Learning Ext JS 4 第51页】
Statics的方法只属于类本身,而不属于任何一个实例,这就决定了我们是在定义类的内部来用statics方法的,而不是在某个实例中。
现在,我要建立一个在银行排队叫号的类,排队的人就象是在流水线上一样,每个人都有一个不重复的顺序号,代码如下。
//定义一个客户类,只需要顺序号,别的什么也不需要。
Ext.define('MyApp.data.Client',{
statics : { //第1步
sequence : 0,
nextId : function(){
return ++this.sequence;
}
},
//使用构造函数,创建1个实例就加1。//第2步.
constructor : function(){
this.id= this.self.nextId(); //去调用类本身的静态方法,做加1处理
//console.log(this.id);
}
});
//begin,因为静态属于类,学习直接使用类名本身调用静态的变量和静态的方法。
Ext.create('MyApp.data.Client');
console.log(MyApp.data.Client.sequence+' 号产生了!');
Ext.create('MyApp.data.Client');
console.log(MyApp.data.Client.sequence+' 号产生了!');
Ext.create('MyApp.data.Client');
console.log(MyApp.data.Client.sequence+' 号产生了!');
console.log(MyApp.data.Client.nextId()+' 号意外的产生了,这是直接使用了类本身来调用自己的静态方法,而有产生某个实例人,可以肯定这是个假号!');
代码完毕,执行结果如下:
• 第1步:我们在类定义内使用了statics静态,这将决定着这个类在创建实例的时候将会启用statics预处理机制。我们已经建立了sequence顺序号属性和nextId方法,这2个将打上statics标志添加到类中,而且,还可以根据你的需要随意的添加。
• 第2步:在类定义中,我们使用了self指针来访问类,Ext对于每一个实例的static内部预处理机制中都建立了这个指针。
使用这样的方式来调用静态类型的变量:
MyApp.data.Client
使用下面这样的方式来调用静态方法。
MyApp.data.Client.nextId();
二、statics 静态的深入理解【译文原创Ext.JS.4.First.Look 第26页】
在Ext JS 4中,任何一个类都可以建立静态的方法,这样做的好处就是直接使用该类名本身来调用方法而不象以前那样创建实例然后再用实例去调用某个方法,调用方式为:
类名.静态变量名。或者:类名.静态方法名,例子:MyApp.Math.count或者MyApp.Math.sum(10,5)
静态的变量和静态的方法定义,代码如下,
Ext.define('MyApp.Math',{
statics : {
count : ,
appname : '数学',
sum : function(number1,number2){
return number1+number2;
}
},
//使用构造函数,创建1个实例就加1,好明白有多少个实例。
constructor : function(){
++this.statics().count;
//console.log(this.statics().count);
}
});
这个类包含了2个静态的变量属性---count和appName,根据第1段的理解我们在没有创建任何实例的情况下就可以直接使用它,
如下直接调用变量:
MyApp.Math.count
MyApp.Math.appname
可以这样:MyApp.Math.sum(10,5)来直接调用静态方法。
现在, 看一下在statics括弧之外是如何调用的,以构造函数为例子,这就需要使用this.statics()该种方式来访问了,this.statics().count,当你使用this.self.属性名 这种格式,能否调用取决于你所指向的实例。
题后话:下面我们来看一下statics有了在继承的情况,有了子类会怎样:
一句话,statics有了子类的情况,情况就发生了严重变异,公共的静态就不在是公共的了。明白的说,静态的count到了子类就不再是公共类型了,静态的方法sum()也就不再是公共的了sum()了。我们在子类中就再也不能使用MyApp.Math2.count或MyApp.Math2.sum(5,0),
寻找答案?
用statics的静态成员和方法有了子类后,在子类中的静态成员和方法到底变成了什么类型?谢谢
Ext JS 4 老特征:statics 静态的变量和方法的更多相关文章
- java继承时能包括静态的变量和方法吗?举例说明!
子类继承了超类定义的所有实例变量和方法包括静态的变量和方法(马克-to-win见下例),并且为它自己增添了独特的元素.子类只能有一个超类.Java不支持多超类的继承. 子类拥有超类的所有成员,但它不能 ...
- js判断网页是真静态还是伪静态的方法
现在很多网站都是使用以“.html“为扩展名的网页,这样做的好处是有利于搜索引擎收录和排名,或者是其他目的,如可以缩短网址使人容易记住.不过有意思的是并不是所有的以“.html”扩展名的网页都是静态的 ...
- js赋值后,不影响源变量的方法。
以前都没发现这个问题,特记录一下. var productListData={pages:001}; var data=productListData;//这样就会有问题. data=$.extend ...
- Ext JS 4 的类系统
前言 我们知道,JavaScript中没有真正的类,它是一种面向原型的语言 .这种语言一个强大的特性就是灵活,实现一个功能可以有很多不同的方式,用不同的编码风格和技巧.但随之也带来了代码的不可预测和难 ...
- Ext JS 4 新特性2:配置项属性(config)之二
Ext JS 4 新特征2:配置项属性config之二 ☞ Config(自动的setters和getters) Ext JS 4介绍了config声明方式,在Ext JS 中也有几个例子:在运行程序 ...
- Ext JS 4 新特性2:配置项属性(config)之一
Ext JS 4 新特征2:配置项属性config 最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属 ...
- [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
引言 贴一个grid 的例子先: 有这样一个需求: 1. 给 Grid(or Tree Grid)添加一列, 这一列显示是Button. 点击之后可以对这一行进行一些操作 2. 这一列每一行对应的按钮 ...
- [Ext JS 4]性能优化
一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...
- ext之关键字mixins、statics、require
1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () { / ...
随机推荐
- 输入事件驱动---evdev_handler的大致实现流程(修整版)
一.input输入子系统框架 下 图是input输入子系统框架,输入子系统由输入子系统核心层(input core),驱动层和事件处理层(Event Handler)三部分组成.一个输入事件,比如滑动 ...
- springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
总结一下 springMvc使用ajax文件上传 首先说明一下,以下代码所解决的问题 :前端通过input file 标签获取文件,通过ajax与后端交互,后端获取文件,读取excel文件内容,返回e ...
- Python_Day12_python mysql and ORM and redis
本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令事务 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql 1. 数 ...
- UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
- mysql - 数据库、表 的创建
-- 创建数据库 CREATE DATABASE IF NOT EXISTS ibs_environ DEFAULT CHARACTER SET utf8; -- 切换数据库 USE ibs_envi ...
- 20145224&20145238 《信息安全系统设计基础》 第四次实验
20145224&20145238 <信息安全系统设计基础>第四次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...
- url的内容及格式
url的内容及结构: url格式:
- Galera集群server.cnf参数调整--前言
文档安排: 前言部分会简述下galera集群,正文中会针对我们线上的环境,在不断业务的情况下,进行参数调整的话,有些参数不能够进行配置,会以#***的形式写入配置文件中,文档也会进行进一步说明. 如果 ...
- css中的一些属性解析
1.inline-block 存在问题:inline-block的相互间距,元素之间会有一个左右2px的margin一样产生 请看中间的空隙. 为什么会产生这个空隙呢?? 怎么解 ...
- 总结4点对学习Linux有帮助的建议(纯干货)
学习需要足够的毅力和耐心 有些人把Linux运维看作一项冗长而枯燥的工作:有些人把linux运维看作一项得力的工具.如果是前者建议还是改变一下认识,不然不建议入门这行.毕竟linux运维工作是对人的毅 ...