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

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

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

    Calvin's Tech Space

    成于堅(jiān)忍,毀于浮躁

       :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理

    OO的JavaScript并不高深,麻煩就麻煩在google出來(lái)的國(guó)人介紹文章經(jīng)常羅羅嗦嗦,而且之間的說(shuō)法還各有不同,擺在一起就讓人看了頭大。
    這里重拾簡(jiǎn)單主義,以一個(gè)最簡(jiǎn)單的例子把OO Javascript說(shuō)明白。

    1.一個(gè)頗為精簡(jiǎn)的例子

    只需理解三個(gè)關(guān)鍵字:
    第一個(gè)是function ,JS世界里Class的定義用"function",function里面的內(nèi)容就是構(gòu)造函數(shù)的內(nèi)容。

    第二個(gè)是this指針,代表調(diào)用這個(gè)函數(shù)的對(duì)象。

    第三個(gè)是prototype,用它來(lái)定義成員函數(shù), 比較規(guī)范和保險(xiǎn)。
    //定義Circle類,擁有成員變量r,常量PI和計(jì)算面積的成員函數(shù)area()
    function Circle(radius)

        this.r = radius;
    }
    Circle.PI = 3.14159;
    Circle.prototype.area = function(  ) {return Circle.PI * this.r * this.r;}
    //使用Circle類
    var c = new Circle(1.0);  
    alert(c.area());
    另外成員函數(shù)定義還可以寫成這樣:
    function compute_area(){return Circle.PI * this.r * this.r;}
    Circle.prototype.area=compute_area;

    2.繼承

    注意兩點(diǎn)
    1.定義繼承關(guān)系 ChildCircle.prototype=new Circle(0); 其中0是占位用的
    2.調(diào)用父類的構(gòu)造函數(shù)
         this.base=Circle;
         this.base(radius);
    //定義ChildCircle子類
    function ChildCircle(radius)

         this.base=Circle;
         this.base(radius);
    }

    ChildCircle.prototype=new Circle(0);
    function Circle_max(a,b)
    {
        if (a.r > b.r) return a;

        else return b;
    }
    ChildCircle.max = Circle_max;
    //使用ChildCircle子類
    var c = new ChildCircle(1);
    var d = new ChildCircle(2);  
    var bigger = d.max(c,d);
    alert(bigger.area());

    3.var式定義
    JS還支持一種var Circle={raidus:1.0,PI:3.1415}的形式,語(yǔ)法就如CSS的定義。
    因此如果Circle只有一個(gè)實(shí)例,下面的定義方式更簡(jiǎn)潔:
    var newCircle=
    {
    r:1.0,
    PI:3.1415,
    area: function(){ return this.PI * this.r * this.r;}
    };
    alert(newCircle.area());
    BTW.吃飽了撐著可以看看Rails帶的OO Javascript庫(kù)--Prototype
    其實(shí),Javascript現(xiàn)在的語(yǔ)法真的不適合那么別扭的寫成OO模式....



    本文轉(zhuǎn)自 http://calvin.javaeye.com/blog/92013
    posted on 2009-09-10 16:02 calvin 閱讀(192) 評(píng)論(0)  編輯  收藏 所屬分類: JavaScript

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 免费观看美女用震蛋喷水的视频| 国产线视频精品免费观看视频| 无遮免费网站在线入口| 亚洲国产美女精品久久| 久久国产免费福利永久| 亚洲国产视频一区| 午夜高清免费在线观看| 国产成人亚洲午夜电影| 亚洲成a人片在线观看国产| 无码AV动漫精品一区二区免费 | 亚洲人xxx日本人18| 青春禁区视频在线观看直播免费 | 日韩成人免费视频播放| 美女视频黄a视频全免费网站色 | 亚洲乱码卡一卡二卡三| 歪歪漫画在线观看官网免费阅读 | 亚洲欧美国产欧美色欲| 四虎在线播放免费永久视频| 亚洲五月午夜免费在线视频| 亚洲av中文无码乱人伦在线咪咕 | 国内精品一级毛片免费看| 精品无码一区二区三区亚洲桃色 | 成人黄网站片免费视频 | 免费无码一区二区三区蜜桃大| 精品在线视频免费| 久久被窝电影亚洲爽爽爽| 免费看片在线观看| 免费人成网上在线观看| 亚洲免费在线视频| 日韩高清在线免费看| 久久精品国产免费一区| 亚洲午夜精品一区二区麻豆| 中文字幕在亚洲第一在线| 91精品成人免费国产片| 免费夜色污私人影院网站电影| 亚洲国产美国国产综合一区二区| 日韩毛片免费在线观看| 三年片在线观看免费观看大全一| 亚洲中文字幕无码久久2020| 亚洲精品卡2卡3卡4卡5卡区| 日本牲交大片免费观看|