<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    samtiger


    QQ:418148757
    Name:yangchuan
    數(shù)據(jù)加載中……
    Ext下類函數(shù)定義

    一:Ext下類函數(shù)定義
    extcore通過:Ext.extend方法來創(chuàng)建類(構(gòu)造函數(shù)),這個(gè)類以下用sb代替。
    這個(gè)類函數(shù)默認(rèn)會有這些屬性(類屬性)。
    superclass:父類,也就是第一個(gè)或第二個(gè)參數(shù)的prototype屬性對象。(具體根據(jù)傳入的參數(shù)類型決定)
    superclass(): 父類,(sb.propertype下) 這是一個(gè)函數(shù),該函數(shù)返回父類的propertype對象
    supr():同上
    constructor():構(gòu)造函數(shù),(sb函數(shù)的propertype對象下)實(shí)際上引用的就是sb函數(shù)自己。
    override(o):重寫方法,(sb函數(shù)下),調(diào)用的是 Ext.override(sb, o);也就是將o中的屬性復(fù)制到sb的propertype下。
    override(o):重寫方法,(sb.propertype下)也就是將o的屬性復(fù)制到sb的propertype下。
    extend(o):(sb函數(shù)下),該函數(shù)調(diào)用的是Ext.extend(sb.o);

    Ext.extend(sb, sp, overrides)方法有三個(gè)參數(shù),這三個(gè)參數(shù)有一定的類型要求:
    sb 一般情況下是一個(gè)類函數(shù)。
    sp:有兩種情況:一種是類函數(shù),另一種是:一個(gè)Object對象。
    overrides:Object對象,通過Ext.override(sb, overrides);方法覆蓋類對象的屬性。

    通過代碼分析,可以看出Ext.extend方法有兩個(gè)應(yīng)用:
    第一:
    因?yàn)閖s沒有重構(gòu)語法,所以我們沒辦法定義js方法的重構(gòu),而上邊這個(gè)extend方法,可以說是一種重構(gòu)的實(shí)現(xiàn)。因?yàn)椋覀兺ㄟ^代碼的分析,我們可以總結(jié)出extend方法的參數(shù)傳

    遞方式。(用面向?qū)ο笳Z言來表示的話,如下結(jié)構(gòu))
    1:extend(Calss sb,Object sp);
    2:extend(Calss sb,Class sp);
    3:extend(Calss sb,Class sp,Object overrides);
    第一種方式目的是定義一個(gè)類函數(shù),這個(gè)類函數(shù)的父類為sb類函數(shù),屬性方法的定義在sp對象中完成。
    比如: var Student = Ext.extend(Person,{
        constructor:function(old){
      this.age=old;
     },
       name:'sam'}
    })
    其實(shí)通過
      if(Ext.isObject(sp)){
                        overrides = sp;
                        sp = sb;
                        sb = overrides.constructor != oc ? overrides.constructor : function(){sp.apply(this, arguments);};
                    }

    我們可以看出Ext.extend

    只有在sp.constructor==Object.prototype.constructor的時(shí)候,才創(chuàng)建并返回一個(gè)函數(shù),該函數(shù)就一句話,

    就是調(diào)用sb(即父類構(gòu)造函數(shù))

    如果sp.constructor==Object.prototype.constructor

    那么sp應(yīng)該是這樣,是一個(gè)對象直接量,或者new Object方式創(chuàng)建的對象,且它們都沒有顯示定義

    constructor方法。

    以下這幾種情況都不會有sp.constructor==Object.prototype.constructor。

    1:var obj = new Object(); 

    obj.constructor=function(){...};

    Ext.extend(sb,obj) //extend 返回的類就是constructor函數(shù)

    2: var obj = {

    constructor:function(){...}

    };

    Ext.extend(sb,obj) //extend 返回的類就是constructor函數(shù)

    3: var obj = new function(){...}();  

    Ext.extend(sb,obj) //extend返回的類就是這個(gè)匿名函數(shù)

    4: var obj = new function(){

    this.constructor=function(){...} 

    }();

    Ext.extend(sb,obj) //extend 返回的類就是constructor函數(shù)。


    總結(jié) :其實(shí)很簡單,Ext.extend這么做的目的是要說,定義一個(gè)類,構(gòu)造函數(shù)就是constructor方法,如果沒顯示定義這個(gè)方法,那么類就使用父類函數(shù)作為新類的構(gòu)造函數(shù)。


    var A=function(){
       alert("this is a");
    }
    var B=function(){
       alert("this is b");
    }

    var SubA = Ext.extend(A,new B());
    var subA = new SubA();//這里就會彈出 this is  a 的提示。
    第二種方式:修改現(xiàn)有類的類結(jié)構(gòu)
    2:extend(Calss sb,Class sp);
    這個(gè)方法的目的其實(shí)之一種包裝,是將sb繼承于sp下,不管sb是不是ext框架下的類,在這個(gè)方法執(zhí)行后sb就成了ext框架
    下的類結(jié)構(gòu)了
    3:extend(Calss sb,Class sp,Object overrides);
    除了有第二種方法的功能外,還額外的給sb添加或覆蓋新的方法或?qū)傩?br /> Ext.extend(Person,DongWu);
    Ext.extend(Person,DongWu,{sex:'man'});

    posted on 2010-06-29 07:07 sam.chuan.yang 閱讀(1114) 評論(0)  編輯  收藏 所屬分類: javascript 筆記


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 永久免费AV无码网站国产| 亚洲国产精品成人久久久| 亚洲人成无码久久电影网站| 日本久久久免费高清| 成人免费看吃奶视频网站| 成人免费视频小说| 国产国产人免费人成免费视频| 四虎免费在线观看| 日韩成人免费在线| 亚洲成A人片77777国产| 亚洲中文字幕无码一久久区| 亚洲精品无码av人在线观看| 亚洲AV无码一区二区三区DV| 亚洲天天做日日做天天看| 久久久亚洲AV波多野结衣| 亚洲不卡1卡2卡三卡2021麻豆| 亚洲一区中文字幕在线电影网| 亚洲中文字幕久久精品蜜桃| 韩国亚洲伊人久久综合影院| 青青久久精品国产免费看| 丰满人妻一区二区三区免费视频| 久久免费精品视频| 免费看h片的网站| 在线观看无码的免费网站| 亚洲成AV人在线观看网址| 亚洲伊人色欲综合网| 久久精品国产亚洲av水果派| 亚洲另类视频在线观看| MM1313亚洲国产精品| 国产特黄一级一片免费| 9420免费高清在线视频| 无码高潮少妇毛多水多水免费| 国产婷婷高清在线观看免费| 亚洲色精品88色婷婷七月丁香| 久久亚洲春色中文字幕久久久| 一本色道久久88亚洲精品综合| 免费看一级毛片在线观看精品视频| a在线观看免费网址大全| 亚洲一区免费视频| 又大又硬又爽免费视频| 久久亚洲精品国产精品黑人|