我们先定义一个Person类 ExtJS4采用define方法
Ext.define("My.Person",{
name : "",
constructor : function(name) {
this.name = name;
},
say : function() {
var me = this;
alert("My name is "+me.name);
return this;
}
});
var adn = Ext.create("My.Person","holy");
adn.say();
可以看出来 ExtJS使用对象继承的方式构造类 没有私有变量 也没有保护变量 全是公有
ExtJS关键字
extend
config
mixins
requires
statics
alias
alternateClassName
inheritableStatics
singleton
uses
使用extend关键字继承
Ext.define("My.Teacher",{
extend : "My.Person",
constructor : function(name, type) {
this.type = type;
this.callParent([name]);
},
types : function() {
var me = this;
alert("My type is "+me.type);
return this;
}
});
var adn = Ext.create("My.Teacher","holy","word");
adn.types();
ExtJS更推荐另一种类的定义方法 这种可以无限继承 没有任何问题
Ext.define("My.Teacher",{
config: {
name : ""
},
constructor: function(cfg) {
this.initConfig(cfg);
},
say : function() {
var me = this;
alert("My type is "+me.name);
return this;
}
});
我都快疯了 请问这样合jquey插件有什么区别 果然ExtJS4后ExtJS有投降jquery的趋势
使用config定义的好处可以自动生成get set方法
Ext.define('My.MathTeacher', {
extend : "My.Teacher",
config: {
type : "Math"
},
constructor: function(cfg) {
this.initConfig(cfg);
}
});
var adn = Ext.create("My.MathTeacher",{
name : "asds",
type : "sads"
});
adn.setName("pac");
alert(adn.getName());
alias 为类定义一个或几个别名 使得类更好的使用 实际上是用来配合Ext.widget等方法的
上面的类我们加一个alias关键字 这样我们就可以用别名来定义类了
Ext.define('My.MathTeacher', {
extend : "My.Teacher",
alias : ["MyTeacher","MathTeacher"],
config: {
type : "Math"
},
constructor: function(cfg) {
this.initConfig(cfg);
}
});
var adn = Ext.create("MathTeacher",{
name : "asds",
type : "sads"
});
adn.setName("lbc");
adn.say();