摘要:首先,說下工廠函數(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
摘要:前言雖然使用構(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)生很多冗余的代碼。因此...
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...
摘要:綜上所述有原型鏈繼承,構(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中方法沒有簽名...
摘要:大潮來襲前端開發(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)讓我們可以使用 ...
摘要:淺析響應(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類)...
閱讀 2391·2023-04-25 19:27
閱讀 3500·2021-11-24 09:39
閱讀 3917·2021-10-08 10:17
閱讀 3407·2019-08-30 13:48
閱讀 1939·2019-08-29 12:26
閱讀 3131·2019-08-28 17:52
閱讀 3545·2019-08-26 14:01
閱讀 3542·2019-08-26 12:19