日期:2014-05-16  浏览次数:20385 次

ExtJs在面向对象所作出的努力(1)

取自dojo中国ExtJS视频教程PPT

?

ExtJs在面向对象所作出的努力(1)

支持命名空间

?

命名空间Ext.namespace("Ext.dojochina");

?

定义:对于类的组织定义方式。

代码举例:

Ext.namespace("Ext.dojoChina");

Java对照:

package Ext.dojochina;

?

支持类实例属性

定义:对于一个实例的特征描述

代码举例:

Ext.apply(Ext.dojochina.Person.prototype,{name:'谁'});

Java代码对照

?

....
private name="xxx";
public void setName(String name){
  this.name = name;
}
public void getName(){
  return name;
}

?

?

支持类实例方法

定义:一个对象所具有的功能与动作

代码举例:

...

print:function(){

alert(String.format("姓名:{0},性别:{1}",this.name,this.sex));

}

java代码对照:

?

....
public void print(){
  System.out.print("姓名:%s,性别:%s",this.name,this.sex);
}

?

支持类静态方法

定义:在一个类级别上共享的方法。

代码举例:

?

Ext.dojochina.Person = Ext.emptyFn;

Ext.dojochina.Person.print = function(_name,_sex){
  var _person = new Ext.dojochina.Person();
  _person.name = _name;
  _person.sex = _sex;
  _person.print();
}

Ext的命名空间的实现是对象和对象属性模拟出来的

?java代码实现

?

Person.print(String name,String sex){
  Person person = new Person();
  person.setName(name);
  person.setSex(sex);
  person.print();
}
??

支持构造方法

定义:在初始化一个对象的同时执行的方法

代码举例:

?

Ext.dojochina.Person = function(_cfg){
  Ext.apply(this,_cfg);
}

java代码对照
public Person(String name,String sex){
  this.name = name;
  this.sex = sex;
}
??

支持类继承

定义:对于类的一种扩展形式

代码举例

?

Ext.extend(Ext.dojochina.Student,
                   Ext.dojochina.Person,
                   {job:"学生"});
Ext.dojochina.Person 继承了Ext.dojochina.Person

?java代码举例

?

Class Student extend Person{
  public Student(String name,String sex){
       super(name,sex);
        this.setJob("学生");
   }
}

支持类实例方法重写

定义:子类在继承父类时对其已经存在的方法进行重新定义

代码举例:重写了print方法

?

Ext.extend(Ext.dojochina.Teacher,
	   Ext.dojochina.Person,
	   {print:function(){
		alert(String.format("{0}是一位{1}老师",this.name,this.sex));
	   }});