1,首先来明确下静态类的定义: 不能被实例化,仅包含静态成员,不包含实例构造函数,无需创建实例,用类名就能直接访问其成员。
javascript中创建静态类的方式如下:
StaticClass = {
a1: 1,
a2: 2,
f1 : function(){},
f2 : function(){}
}
由于StaticClass不包含构造函数,所以不能用new来实例化。 它其实就是一个全局对象。
Ext中有许多静态类,其创建的方式一般如下:
Ext.Class = function(){
var t1 = 1;
var t2 = 2;
function f1(){};
function f2(){};
var re = {
a1: xxx,
a2: xxx,
fn1:function(){},
fn2:function(){}
}
return re;
}()
采用闭包的方式实现,最后返回的实际上也是一个对象,不能再被实例化,最后的()运算符不能少,如果不加(),则Class只是一个函数定义,函数体并未运行。
采用这种方式实现静态类的方式的好处是可以保存一些局部变量,和私有函数,并能做一些预处理。