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 静态的变量和方法的更多相关文章

  1. java继承时能包括静态的变量和方法吗?举例说明!

    子类继承了超类定义的所有实例变量和方法包括静态的变量和方法(马克-to-win见下例),并且为它自己增添了独特的元素.子类只能有一个超类.Java不支持多超类的继承. 子类拥有超类的所有成员,但它不能 ...

  2. js判断网页是真静态还是伪静态的方法

    现在很多网站都是使用以“.html“为扩展名的网页,这样做的好处是有利于搜索引擎收录和排名,或者是其他目的,如可以缩短网址使人容易记住.不过有意思的是并不是所有的以“.html”扩展名的网页都是静态的 ...

  3. js赋值后,不影响源变量的方法。

    以前都没发现这个问题,特记录一下. var productListData={pages:001}; var data=productListData;//这样就会有问题. data=$.extend ...

  4. Ext JS 4 的类系统

    前言 我们知道,JavaScript中没有真正的类,它是一种面向原型的语言 .这种语言一个强大的特性就是灵活,实现一个功能可以有很多不同的方式,用不同的编码风格和技巧.但随之也带来了代码的不可预测和难 ...

  5. Ext JS 4 新特性2:配置项属性(config)之二

    Ext JS 4 新特征2:配置项属性config之二 ☞ Config(自动的setters和getters) Ext JS 4介绍了config声明方式,在Ext JS 中也有几个例子:在运行程序 ...

  6. Ext JS 4 新特性2:配置项属性(config)之一

    Ext JS 4 新特征2:配置项属性config 最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属 ...

  7. [Ext JS 4] 实战之Grid, Tree Gird 添加按钮列

    引言 贴一个grid 的例子先: 有这样一个需求: 1. 给 Grid(or Tree Grid)添加一列, 这一列显示是Button. 点击之后可以对这一行进行一些操作 2. 这一列每一行对应的按钮 ...

  8. [Ext JS 4]性能优化

    一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...

  9. ext之关键字mixins、statics、require

    1.mixins 说明:类似于面向对象中的多继承 <script type="text/javascript"> Ext.onReady(function () { / ...

随机推荐

  1. 为什么JAVA的垃圾回收机制无法避免内存泄漏

    一.本文参考:    1.<深入理解java虚拟机 JVM高级特性与最佳实践>    2.http://coderevisited.com/memory-leaks-in-java/   ...

  2. AC自动机小结

    专题链接 第一题--hdu2222 Keywords Search ac自动机的模板题,入门题.  题解 第二题--hdu2896 病毒侵袭   一类病毒的入门题,类似模板  题解 第三题--hdu3 ...

  3. Java多线程初探

    多线程 单线程的程序只有一个顺序执行流.多个顺序流之间互不干扰. 多线程的创建 定义Thread类的子类,重写该类的run()方法. 创建Thread子类的实例. 调用线程对象的start()方法来启 ...

  4. CSS3的基础用法

    CSS3的现状:1.浏览器支持程度差,需要添加私有前缀 2.移动端支持优于PC端 3.不断改进中 4.应用相对广泛 在CSS3中增加新增了许多灵活查找元素的方法,极大的提高了查找元素的效率和精准度.C ...

  5. alibaba fastjson List<Map<String, String>>2Str

    import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; impo ...

  6. 【OS】实模式和保护模式区别及寻址方式

    实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...

  7. Python之路 day2 字符串/元组/列表/字典互转

    #-*-coding:utf-8-*- #1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type ' ...

  8. Android 常用布局视图

    常用包 http://square.github.io/ EventBus Scroller 滚动 拖拽 # android.support.design.widget.CollapsingToolb ...

  9. PSP记录个人项目耗时情况

    四则运算编程 PSP记录个人项目耗时情况 PSP Personal Software Process Stages Time(%) Planning 计划 7 Estimate 估计这个任务需要多少时 ...

  10. Android genymotion安装输入法不兼容

    genymotion 此应用与您的手机不兼容 http://blog.csdn.net/caiwenfeng_for_23/article/details/41692923