成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

怎樣用JavaScript定義一個(gè)類(lèi)

Cristalven / 1058人閱讀

摘要:我原來(lái)的寫(xiě)法都是這樣后來(lái)又看到另外一種復(fù)雜一點(diǎn)而且看起來(lái)好像沒(méi)有必要的寫(xiě)法這里的函數(shù)其實(shí)是一個(gè)制造類(lèi)的函數(shù),它返回了真正的類(lèi)。感覺(jué)這樣做的好處是更好的實(shí)現(xiàn)了封裝。

我原來(lái)的寫(xiě)法都是這樣:

function Dog(){
    this.name = "hachi";
}

Dog.prototype = {
    makeNoise:function(){
        alert("wangwangwang");
    }
};

后來(lái)又看到另外一種復(fù)雜一點(diǎn)而且看起來(lái)好像沒(méi)有必要的寫(xiě)法:

function Dog(){
    var privateVariable = "secret";

    var fn = function(){
        //...
    }

    fn.prototype = {
        makeNoise:function(){
            alert("wangwangwang");
        }
    }

    return fn;
}

這里的Dog函數(shù)其實(shí)是一個(gè) 制造類(lèi) 的函數(shù),它返回了真正的Dog類(lèi)。
感覺(jué)這樣做的好處是更好的實(shí)現(xiàn)了封裝。
例如這里的privateVariable就是一個(gè)私有變量:

var d = new Dog;
d.privateVariable //undefined

另外如果在第一個(gè)例子的最后加上一句:

Dog.prototype = {
    //e...WTF??
}

這樣Dog就不是Dog了~

后來(lái)的理解
上面這樣新建類(lèi)的方法直接重寫(xiě)了prototype對(duì)象。這樣prototype原本內(nèi)置的屬性就沒(méi)有了(arguments, call, apply等)。
下面這種新建類(lèi)的方法好像更好一些:

var Dog = function(name){
    this.name = name;
    var privateVariable = "you cannot see me.";
    this.getPrivate = function(){return privateVariable;};
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87535.html

相關(guān)文章

  • 怎樣JavaScript和HTML5 Canvas繪制圖表

    摘要:餅狀圖將數(shù)據(jù)用切割成份的圓來(lái)展示。至于半徑,我們用寬度的一半與高度的一半的較小值,因?yàn)槲覀儾幌胱岋灎顖D超出。結(jié)果看起來(lái)如下這樣繪制圓環(huán)圖我們已經(jīng)看到如何創(chuàng)建餅狀圖。怎樣畫(huà)洞呢我們可以畫(huà)一個(gè)白色的圓在餅狀圖上。 showImg(https://segmentfault.com/img/bVObDh?w=850&h=362); 原文:https://code.tutsplus.com/zh...

    doodlewind 評(píng)論0 收藏0
  • 【譯】怎樣創(chuàng)建定制表單組件

    摘要:若你想在諸如元素的組件上應(yīng)用高級(jí)樣式或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。 系列文章說(shuō)明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應(yīng)用高級(jí)樣式]()、或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。 我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。為達(dá)到目的,我們選擇重構(gòu)元素作為例子...

    AnthonyHan 評(píng)論0 收藏0
  • 【譯】怎樣創(chuàng)建定制表單組件

    摘要:若你想在諸如元素的組件上應(yīng)用高級(jí)樣式或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。 系列文章說(shuō)明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應(yīng)用高級(jí)樣式]()、或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。 我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。為達(dá)到目的,我們選擇重構(gòu)元素作為例子...

    William_Sang 評(píng)論0 收藏0
  • 【譯】怎樣創(chuàng)建定制表單組件

    摘要:若你想在諸如元素的組件上應(yīng)用高級(jí)樣式或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。 系列文章說(shuō)明 原文 在許多情況下,[可用的HTML表單組件]()是不夠的。若你想在諸如元素的組件上[應(yīng)用高級(jí)樣式]()、或者想定制組件的行為,你就只能選擇創(chuàng)建自己的表單組件。 我們將通過(guò)本文學(xué)習(xí)如何構(gòu)建一個(gè)表單組件。為達(dá)到目的,我們選擇重構(gòu)元素作為例子...

    wanghui 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<