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

資訊專欄INFORMATION COLUMN

淺析js的工廠函數(shù)、構(gòu)造函數(shù)

_DangJin / 1431人閱讀

摘要:首先,說下工廠函數(shù)。應(yīng)對(duì)某些場(chǎng)景,工廠函數(shù)并不能滿足我們,如我需要判斷樹是不是動(dòng)物類型你會(huì)發(fā)現(xiàn)你并沒辦法。這時(shí)候構(gòu)造函數(shù)就出現(xiàn)了我的性別是猴子母猴子我的性別是母跟工廠函數(shù)很像,只是沒有了創(chuàng)建對(duì)象和,并且都用添加屬性。

首先,說下工廠函數(shù)。顧名思義,就好比一個(gè)工廠一樣,可以批量制造某種類型的東西。其實(shí)說白了就是封裝了個(gè)方法減少重復(fù)工作,相信稍微有點(diǎn)碼齡的人都懂。上代碼:

function animal (name,sex) {
        let obj = new Object()
        obj.name = name
        obj.sex = sex
        obj.saySex = function () {
            alert(`我的性別是${this.sex}`)
        }
        return obj
    }
    let monkey = animal("猴子","母")
    console.log(monkey.name)    //猴子
    monkey.saySex()             //我的性別是母

這樣寫主要是為了解決需要?jiǎng)?chuàng)建大量有屬性重疊的對(duì)象,如果每個(gè)都new一下,然后逐一添加屬性。這也是個(gè)累人的活。通過上面的代碼中,我們聲明了一個(gè)animal方法,此方法可批量制造動(dòng)物。這樣每次只需要簡(jiǎn)單的一行代碼就可以搞定一個(gè)動(dòng)物的創(chuàng)建。

方便雖然方便,但是還是有缺點(diǎn)。就是每次新建的時(shí)候都需要在內(nèi)部創(chuàng)建一個(gè)對(duì)象,然后進(jìn)行一系列操作,最后返回。也就是說創(chuàng)建十次,那么就會(huì)創(chuàng)建十次全新的對(duì)象,然后返回并賦值。這樣創(chuàng)建的十個(gè)對(duì)象在代碼間的關(guān)系是沒有的,換句話說就是我們都產(chǎn)自動(dòng)物,但是誰都不知道我們我們產(chǎn)自哪里。

應(yīng)對(duì)某些場(chǎng)景,工廠函數(shù)并不能滿足我們,如:我需要判斷樹是不是動(dòng)物類型,你會(huì)發(fā)現(xiàn)你并沒辦法。只能知道他是Object。這時(shí)候構(gòu)造函數(shù)就出現(xiàn)了:

function animal (name,sex) {
        this.name = name
        this.sex = sex
        this.saySex = function () {
            alert(`我的性別是${this.sex}`)
        }
    }
    let monkey = new animal("猴子","母")
    console.log(monkey.name)    //猴子
    monkey.saySex()             //我的性別是母

跟工廠函數(shù)很像,只是沒有了創(chuàng)建對(duì)象和return,并且都用this添加屬性。聲明新對(duì)象的時(shí)候通過new關(guān)鍵字。這樣做的好處是,新建的對(duì)象間是有關(guān)系的,我們檢測(cè)下:

console.log(monkey instanceof animal)     //true
console.log(monkey instanceof Object)     //true

我們可以看到,他的類型既是animal也是Object。就好比你是你爸爸的后代,但同時(shí)也是你爺爺?shù)暮蟠?/p>

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

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

相關(guān)文章

  • js面向?qū)ο?em>淺析---對(duì)象創(chuàng)建幾種常見方式

    摘要:前言雖然使用構(gòu)造函數(shù)或者使用對(duì)象字面量可以很方便的用來創(chuàng)建一個(gè)對(duì)象,但這種方式有一個(gè)明顯的缺點(diǎn)使用一個(gè)接口創(chuàng)建多個(gè)對(duì)象會(huì)產(chǎn)生很多冗余的代碼。即調(diào)用構(gòu)造函數(shù)所創(chuàng)建的那個(gè)對(duì)象的原型對(duì)象好處是可以讓所有對(duì)象的實(shí)例共享他的屬性的方法。 前言 雖然使用Object構(gòu)造函數(shù)或者使用對(duì)象字面量可以很方便的用來創(chuàng)建一個(gè)對(duì)象,但這種方式有一個(gè)明顯的缺點(diǎn):使用一個(gè)接口創(chuàng)建多個(gè)對(duì)象會(huì)產(chǎn)生很多冗余的代碼。因此...

    Invoker 評(píng)論0 收藏0
  • Vue源碼淺析之異步組件注冊(cè)

    showImg(https://segmentfault.com/img/bVba39I?w=400&h=400); Vue的異步組件注冊(cè) Vue官方文檔提供注冊(cè)異步組件的方式有三種: 工廠函數(shù)執(zhí)行 resolve 回調(diào) 工廠函數(shù)中返回Promise 工廠函數(shù)返回一個(gè)配置化組件對(duì)象 工廠函數(shù)執(zhí)行 resolve 回調(diào) 我們看下 Vue 官方文檔提供的示例: Vue.component(asyn...

    Shonim 評(píng)論0 收藏0
  • JavaScript系列--淺析原型鏈與繼承

    摘要:綜上所述有原型鏈繼承,構(gòu)造函數(shù)繼承經(jīng)典繼承,組合繼承,寄生繼承,寄生組合繼承五種方法,寄生組合式繼承,集寄生式繼承和組合繼承的優(yōu)點(diǎn)于一身是實(shí)現(xiàn)基于類型繼承的最有效方法。 一、前言 繼承是面向?qū)ο螅∣OP)語言中的一個(gè)最為人津津樂道的概念。許多面對(duì)對(duì)象(OOP)語言都支持兩種繼承方式::接口繼承 和 實(shí)現(xiàn)繼承 。 接口繼承只繼承方法簽名,而實(shí)現(xiàn)繼承則繼承實(shí)際的方法。由于js中方法沒有簽名...

    draveness 評(píng)論0 收藏0
  • JS或Jquery

    摘要:大潮來襲前端開發(fā)能做些什么去年谷歌和火狐針對(duì)提出了的標(biāo)準(zhǔn),顧名思義,即的體驗(yàn)方式,我們可以戴著頭顯享受沉浸式的網(wǎng)頁,新的標(biāo)準(zhǔn)讓我們可以使用語言來開發(fā)。 VR 大潮來襲 --- 前端開發(fā)能做些什么 去年谷歌和火狐針對(duì) WebVR 提出了 WebVR API 的標(biāo)準(zhǔn),顧名思義,WebVR 即 web + VR 的體驗(yàn)方式,我們可以戴著頭顯享受沉浸式的網(wǎng)頁,新的 API 標(biāo)準(zhǔn)讓我們可以使用 ...

    CatalpaFlat 評(píng)論0 收藏0
  • 淺析Vue響應(yīng)式原理(一)

    摘要:淺析響應(yīng)式原理一的特點(diǎn)之一是響應(yīng)式,視圖隨著數(shù)據(jù)的更新而更新,在視圖中修改數(shù)據(jù)后實(shí)例中的數(shù)據(jù)也會(huì)同步更新。對(duì)于每個(gè)響應(yīng)式數(shù)據(jù),會(huì)有兩個(gè)實(shí)例,第一個(gè)是在中的閉包遍歷,用途顯而易見。接收一個(gè)回調(diào)函數(shù),會(huì)在重新求值且值更新后執(zhí)行。 淺析Vue響應(yīng)式原理(一) Vue的特點(diǎn)之一是響應(yīng)式,視圖隨著數(shù)據(jù)的更新而更新,在視圖中修改數(shù)據(jù)后Vue實(shí)例中的數(shù)據(jù)也會(huì)同步更新。內(nèi)部借助依賴(下文中的Dep類)...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<