在ExtJS中定义类的方式
Ext.define
在Ext中定义一个类: Ext.define(className, properties, callback)
Ext.define('Person',{
// 添加配置项 config,配置当前类属性,会自动加上get和set方法
config:{
name:'zs',
age:25
},
// 自己定义的方法
sayHello:function(){
alert("自定义的方法");
},
// 给当前类添加一个构造器
constructor:function(config){
for(var attr in config){
console.log(attr + " : " + config[attr]);
}
// 初始化传递的配置信息
this.initConfig(config);
}
});
Ext.create
// 使用定义的类 推荐方式
// 定义一个对象
var person = Ext.create('Person',{
name:'z6',
age:28
});
alert(person.getAge());
alert(person.getName());
person.sayHello();
在ExtJS中使用继承
Ext.define("Person",{
config:{
age:23
},
constructor:function(config){
var cur = this;
cur.initConfig(config);
}
});
// sub class
Ext.define("Boy",{
// 继承Person
extend:'Person',
config:{
name:'zs',
sex:'男'
}
});
// var boy = Ext.create('Boy');
// alert(boy.getName());
// alert(boy.getAge());
// alert(boy.getSex());
别名和备用名
Ext.define("User",{
config:{
name:'zs',
age:23
},
// 别名
// alias:'UUU',
alternateClassName:'DDD',// ClassManager
constructor:function(config){
var me = this;
me.initConfig(config);
}
});
// var u = Ext.create('User',{});
// alert(u.getName());
// var u = Ext.create('UUU',{});
// alert(u.getAge());
var u = Ext.create('DDD',{});
alert(u.getAge());
静态属性
Ext.define('Person',{
config:{
name:'父类'
},
statics:{
// 静态属性或方法,不可以被子类继承
static_id:'static_id静态属性'
},
inheritableStatics:{
// 静态属性或方法,可以被子类继承
inheritableStatics_id:'inheritableStatics_id静态属性'
},
constructor:function(config){
var me = this;
me.initConfig(config);
}
});
// 静态属性或方法,直接使用类名调用
// alert(Person.static_id);
// alert(Person.inheritableStatics_id);
// subClass
Ext.define('User',{
extend:'Person',
config:{
age:20
}
});
// alert(User.static_id);// undefined
alert(User.inheritableStatics_id);
混入 实现多继承
Ext.define("Sing",{
canSing:function(){
alert("canSing");
}
});
Ext.define("Say",{
canSay:function(){
alert("canSay");
}
});
// mixins 在User类中混入Sing和Say两个类
Ext.define("User",{
mixins:{
sing:"Sing",
say:"Say"
}
});
var u = Ext.create("User");
u.canSay();
u.canSing();
requires uses 及 singleton
Ext.define('MyComponent', {
// requires加载需要的类的时机:当前类初始化之前被加载
requires:['Ext.window.Window', 'Ext.button.Button'],
// uses加载需要的类的时机:当前类初始化之后被加载
uses:['Ext.form.Panel', 'Ext.grid.Panel'],
singleton:true //当前类被当作一个单例对象
});