打开ext的API,如下
找到Class这个选项
将鼠标移到config那里可以看到有以下属性:
好了,让我们开始进入主题:
首先,来讲讲如何自定义一个类,在ext中,创建一个类其实与其他语言差不多,只是表达的方式不一样而已,下面是定义一个类的方法
<!--*********************************************-->
<!--类的创建-->
Ext.define('Father', {
name: 'Unknown',
constructor: function(name) {
if (name) {
this.name = name;
Ext.Msg.alert('I\'m hungry','I want to eat');
}
},
eat:function(){
Ext.Msg.alert('I\'m hungry,I want to eat');
}
})
var aaron = Ext.create('Father', 'Aaron');
<!--*********************************************-->
既然,我们知道了如何定义一个类了,那么我们就要知道他是如何继承的了,用到上图中的extend这个属性 ,方法如下 :
Ext.define('Person', {
say: function(text) { alert(text); }
});
Ext.define('Developer', {
extend: 'Person',
say: function(text) { this.callParent(["print "+text]); }
});
用mixins来实现多继承,如下:
Ext.define('Singer', {
sing: function() {
alert("For he's a jolly good fellow...")
}
});
Ext.define('Dancer', {
dance: function() {
alert("For he's a jolly Dance...")
}
});
Ext.define('Musician', {
mixins: {
tom:'Singer',
jery:'Dancer'
},
sing:function(){
alert(123);
// this.mixins.canSing.sing.call(this);
}
})
var kk=Ext.create('Musician');
kk.sing();
kk.mixins.tom.sing.call(this);
kk.dance();
用alias来为类设置别名:
<!--alias的用法,使用alias时注意,名称必须为小写-->
/*Ext.define('MyApp.CoolPanel', {
extend:'Ext.panel.Panel',
alias: ['widget.coolpanel','widget.coolpanel2'],
hehe:function(){Ext.Msg.alert('hehe','hehe')},
title: 'Yeah!'
});*/
//通过Ext.widget()创建实例
/*Ext.widget('coolpanel', {
width : 100,
height : 100 ,
style: {
color: '#FFFFFF',
backgroundColor:'#000000'
},
renderTo:Ext.getBody()
});*/
//通过xtype创建
/*Ext.widget('coolpanel', {
width : 200,
height : 200 ,
items: [
{xtype: 'coolpanel2', html: 'Foo'},
{xtype: 'coolpanel2', html: 'Bar'}
],
renderTo:Ext.getBody()
});*/
<!--alternateClassName的用法,跟alias有点类似-->
/*Ext.define('Developer', {
alternateClassName: ['Coder', 'Hacker'],
code: function(msg) {
alert('Typing... ' + msg);
}
});
var joe = Ext.create('Developer');
joe.code('stackoverflow');
var rms = Ext.create('Hacker');
rms.code('hack hack');*/
<!--*********************************************-->
<!--inheritableStatics 定义静态方法,可以被子类继承,类似于static,但static是不可以被子类继承-->
/*Ext.define('Human', {
inheritableStatics : {
eat : function(){
alert('eat');
}
},
say: function(text) { alert(text); }
});
Ext.define('Man', {
extend : 'Human'
});
Man.eat(); */
<!--*********************************************-->
<!--*********************************************-->
/*uses 和 requires : 与requires属性类似,都是对某些类进行引用
uses -- 被引用的类可以在该类之后才加载.
requires -- 被引用的类必须在该类之前加载.
*/
Ext.define('Gird', {
uses : ['Boy'],
getBoy : function(){
return Ext.create('Boy');
},
sleep : function(){
alert('sleep');
}
});
//对于uses属性,Boy类放在后面是可以的,不会报错
Ext.define('Boy', {
play : function(){
alert('play');
}
});
//对于requires属性,Boy类必须在Grid类之前加载,不然会报错
Ext.define('Boy', {
play : function(){
alert('play');
}
});
Ext.define('Gird', {
requires : ['Boy'],
getBoy : function(){
return Ext.create('Boy');
},
sleep : function(){
alert('sleep');
}
});
<!--*********************************************-->
<!--Cofig的使用,主要是简化构造器中的参数-->
/*Ext.define('Father', {
config:{
name:'LiLi',
age:0
},
constructor: function(config) {
//Ext.Msg.alert('message','My name is '+name+'i\'m'+age+'old');
this.initConfig(config);//除了这个,什么都不能加进来
},
eat:function(){
Ext.Msg.alert('I\'m hungry,I want to eat');
}
})
var aaron = Ext.create('Father', {
name:'huahua',
age:19
});
alert(aaron.getName());*/
<!--*********************************************-->
好了,这一节就到这吧,小海我也累了,明天继续把学到的东西与大家一起分享
转载于:https://blog.51cto.com/9197823/1641333