Extjs面向对象设计

声明:

   ①学习时Extjs版本3.2.0,

   ②引用ExtJs代码:

<link rel="stylesheet" type="text/css" href="../../ext-3.2.0/resources/css/ext-all.css">
<script type="text/javascript" src="../../ext-3.2.0/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../../ext-3.2.0/ext-all.js"></script>

 

 

面向对象设计一般主要有以下一些方面:①属性②方法③构造方法④继承⑤事件.先看个示例:

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

 以上代码定义一个空的Person类,并实现构造方法。

Ext.apply(Person.prototype,{
     name:"",
     sex:"",
     printf:function(){
           alert(String.format("姓名:{0},性别:{1}",this.name,this,sex););
    }
});

 

以上代码是给Person类增加两个属性及一个方法。这种添加属性方法的写法叫做"标量写法",Json格式,代码简练且方便。

Ext.onReady(function(){
	//创建一个Person类的实例
	var _person = new Person();
	_person.name="余雅娜";
	_person.sex="女";
	_person.printf();
	
	var _person_ = new Person({name:"李志文",sex:"男"});
	_person_.printf();
});

 

以上代码实现了两种方式创建了两个Person对象,并调用printf方法来输出。

Student = function(_cfg){
	Ext.apply(this,_cfg);
}
Ext.extend(Student,Person,{
	name:"学生",
	sex:"",
	printf:function(){
		alert(String.format("我是一个学生,名字:{0},性别:{1}",this.name,this.sex));
	}
});

 

以上代码创建一个有构造参数的Student类,它继承了Person类,并重写了父类的属性方法。这里的继承,可以扩展属性及方法等。

 

到目前为止,已经学习了ExtJs的属性、方法、构造方法、继承。下面根据继承,说下事件.

Teacher = function(_cfg){
	this.addEvents("namechange","sexchange");
}

Ext.extend(Teacher,Ext.util.Observable,{
	name:"",
	sex:"",
	setName:function(_name){
		if(this.name != _name){
			//触发namechange事件
			this.fireEvent("namechange",this,this.name,_name);
			this.name = _name;
		}
	},
	setSex:function(_sex){
		if(this.sex != _sex){
			this.fireEvent("sexchange",this,this.sex,_sex);
			this.sex = _sex;
		}
	}
});



Ext.onReady(function(){
	var _teacher = new Teacher();
	_teacher.on("namechange",function(_teacher,_old,_new){
		alert(String.format("老师的姓名改变了,由原来的:{0}变为了:{1}",_old,_new));
	});
	_teacher.on("sexchange",function(_teacher,_old,_new){
		alert(String.format("老师的性别改变了,由原来的:{0}变为了:{1}",_old,_new));
	})
	_teacher.setName(prompt("请输入老师姓名",""));
	_teacher.setSex(prompt("请输入老师性别",""));
});

 以上代码创建了一个Teacher类,并给它添加了namechange,sexchange两个事件,这两个事件会分别在name/sex改变的时候触发。在实际调用的时候,创建_teacher对象,并添加监听,以及事件触发时的响应函数.

 

关于命名空间,Ext.namespace("Ext.test");不知道怎么回事,创建类Ext.test.Person时,调用老是报错,请拍砖指教!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值