Ext 命名空間、類定義、繼承、事件

Ext.namespace("Ext.MyApp");      //定義命名空間。

        Ma = Ext.MyApp;    //定義命名別名。

        Ma.Person = Ext.emptyFn;        //Person類,人類在Ext.MyApp這個命名空間下。

        Ma.Student = Ext.emptyFn;       //Student 類。

        

        Ma.Person = function(_cfg) {

            Ext.apply(this, _cfg);         //_cfg在實際中是如下格式{Name:'老狼',Sex:'男'}

        }

        Ma.Student = function(_cfg) { //Student 類這裏註冊了一個名字改變時的事件。

            Ext.apply(this, _cfg);

            this.addEvents('NameChange');     //註冊事件。

        }

        Ext.extend(Ma.Person, Ext.util.Observable); //Person類繼承Ext事件類。

        

        Ext.apply(Ma.Person.prototype, {  

        job:'無', //定義一個屬性。

        print: function() { //定義一個方法。

            alert(String.format("姓名:{0} -- 性別:{1} --- 職業:{2}", this.Name, this.Sex));

            }

        });

 

        Ma.Person.Print = function(_Name, _Sex) {   //定義了一個Person類的靜態方法。

            var Person = new Ma.Person({ Name: _Name, Sex: _Sex });

            Person.print();

        }

 

        

        Ext.extend(Ma.Student, Ma.Person, {   //Student類繼承了Person類。

            job: '我是學生',     //重定義父類屬性。

            setName: function(_Name) {    //添加了一個新的方法用來設置名字。

                if (this.Name != _Name) {

                    this.fireEvent('NameChange', this, this.Name, _Name);     //觸發事件的地方。

                    this.Name = _Name;

                }

            },

            print: function() { //重寫了父類Person的print方法。

                alert(String.format("姓名:{0} -- 性別:{1} --- 我的職業是:{2}", this.Name, this.Sex, this.job));  

            }

        });

       以下是調用的測試代碼

        var st = new Ma.Student({ Name: '小花', Sex: '女' });   

        st.on("NameChange", function(sender, oldName, newName) {    //名字改變時的處理程序

            alert(String.format("原來的名字:{0} --- 新的名字:{1} --- 觸發的對象:{2}", oldName, newName, sender));

        });

        st.setName("傑克老狼"); //設置名字

        st.print();                          //調用Student類的print函數。

發佈了29 篇原創文章 · 獲贊 0 · 訪問量 1828
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章