咱們先定義一個Person類 ExtJS4採用define方法jquery
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使用對象繼承的方式構造類 沒有私有變量 也沒有保護變量 全是公有ui
ExtJS關鍵字
this
extend插件
configcode
mixins對象
requires繼承
staticsget
aliasit
alternateClassNameio
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();