我们先定义一个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();