刚看了几个extjs的基本是视频讲的是extjs的仿oop特性,代码有点bt也很妙,记下来为了不让自己忘记。
1.支持命名空间
Ext.namespace("Ext.dojochina");
这句代码相当于java中的
package Ext.dojochina;
把ext对象放到不同的包里加以区分。当然引用的时候是要加上命名空间了。
2.支持类实例属性
Ext.dojochina.Person = Ext.emptyFn;
这句代码是说创建了一个Person空对象,相当于
Ext.dojochina.Person =function(){};
Ext.apply(Ext.dojochina.Person.prototype,{name:"",sex:"",print:function(){alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));}});
这里是给Person对象赋予属性。包括字段和方法。
3.支持类实例方法
3.支持类静态方法
Ext.dojochina.Person.print = function(name,sex)
{
var person=new Ext.dojochina.Person();
person.name=name;
person.sex=sex;
person.print();
};
这里是定义了Person的一个静态方法。
4.支持构造方法
Ext.dojochina.Person=function(cfg)
{
Ext.apply(this,cfg);
Ext.apply(this,{print:function(){alert(String.format("姓名:{0},性别:{1}",this.name,this.sex))}});
}
这里是定义了Person的一个构造方法。
5.支持类继承, 方法重写
Person.js:
Ext.namespace("Ext.dojochina");
Dojo=Ext.dojochina;
Dojo.Person=function(){};
PER=dojo.Dojo;
Ext.apply(PER.prototype,{name:"路人甲",role:"人",sex:"春哥",print:function(){alert(String.format("{0}是一个{1}性别是{2}",this.name,this.role,this.sex))}});
Student.js:
Ext.namespace("Ext.dojochina");
Ext.dojochina.Student=function(cfg)
{
Ext.apply(this,cfg);
};
Ext.extend(Dojo.Student,Dojo.Person,{role:"学生",print:function(){alert(String.format("{0} is a {1}",this.role,this.sex));}});
这里是ext的继承,也包括的方法的重写
7.支持命名空间别名, 类别名
Ext.namespace("Ext.dojochina");
Dojo=Ext.dojochina;//命名空间别名
Dojo.Person=function(){};
PER=dojo.Dojo;//类别名
9.支持事件队列
命名空间的别名规则是首字母大些其他字母小写;类别名字符全部大写。