摘要:犯渾的地方中的原型繼承幾乎是面試必問(wèn)點(diǎn),然而真正透徹的理解它還是需要費(fèi)一番功夫的,等等看到腦子就昏掉了,有時(shí)候以為自己掌握了,但是沒過(guò)多久看到角度不同的講解時(shí)就又犯糊涂了犯渾點(diǎn)中的構(gòu)造函數(shù),實(shí)例與原型之間的關(guān)系。
在javascirpt中,每個(gè)對(duì)象都有一個(gè)指向它的原型對(duì)象的內(nèi)部鏈接,這個(gè)原型對(duì)象又有自己的原型,一級(jí)一級(jí)鏈接上去,直到某個(gè)對(duì)象的原型為null,從而實(shí)現(xiàn)了繼承。
犯渾的地方javascript中的原型繼承幾乎是面試必問(wèn)點(diǎn),然而真正透徹的理解它還是需要費(fèi)一番功夫的,prototype, __proto__, constructor等等看到腦子就昏掉了,有時(shí)候以為自己掌握了,但是沒過(guò)多久看到角度不同的講解時(shí)就又犯糊涂了TT
犯渾點(diǎn)1:javascript中的構(gòu)造函數(shù),實(shí)例與原型之間的關(guān)系。借用這篇文章中的一幅圖:
總結(jié)出了以下三點(diǎn)內(nèi)容:
原型繼承的時(shí)候僅僅限于對(duì)象之間的繼承;
通過(guò)構(gòu)造函數(shù)生成的對(duì)象實(shí)例,實(shí)際上繼承的是構(gòu)造函數(shù)的原型;
構(gòu)造函數(shù)在其中只是充當(dāng)了構(gòu)造器的角色,在考慮繼承關(guān)系時(shí),可以將其忽略,而只考慮其的prototype;
舉個(gè)例子,使用Array構(gòu)造器函數(shù)生成Array實(shí)例的時(shí)候,實(shí)例繼承的是Array函數(shù)的prototype對(duì)象,Array的prototype對(duì)象上聲明了concat,pop,splice等等的方法。
犯渾點(diǎn)2: 另外一個(gè)糊涂的點(diǎn)就是__protp__與prototype的關(guān)系。__proto__在某些環(huán)境下可以得到該對(duì)象的原型對(duì)象, 但是標(biāo)準(zhǔn)的方法是
通過(guò)Object.getPrototypeOf()的方式查詢a的原型對(duì)象。
所以,不使用__proto__,使用Object.getPrototypeOf()的方法既標(biāo)準(zhǔn),又可以避免我們因?yàn)開_proto__和prototype混淆而頭疼。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/79063.html
摘要:為什么要學(xué)習(xí)設(shè)計(jì)模式做事情之前問(wèn)個(gè)為什么總是好的。設(shè)計(jì)模式的使用方法關(guān)于使用方式,像我這種初學(xué)者最容易犯的錯(cuò)誤就是生搬硬套,但是模仿本來(lái)也是學(xué)習(xí)的一個(gè)過(guò)程,最重要的事情是在模仿中要學(xué)會(huì)思考。 為什么要學(xué)習(xí)設(shè)計(jì)模式? 做事情之前問(wèn)個(gè)為什么總是好的。關(guān)于設(shè)計(jì)模式的好壞,我在知乎上也看過(guò)一些討論,有知友對(duì)其提出過(guò)一些疑問(wèn),里面有一些關(guān)于設(shè)計(jì)模式的觀點(diǎn): 設(shè)計(jì)模式有何不妥,所謂的荼毒體現(xiàn)在哪...
摘要:但是在中,的生命還會(huì)繼續(xù)。這其中最典型的問(wèn)題便是批量增加元素。這時(shí),如果構(gòu)造函數(shù)被調(diào)用時(shí)沒有參數(shù),則會(huì)自動(dòng)設(shè)置為。因?yàn)閺南到y(tǒng)的角度來(lái)說(shuō),當(dāng)你用字符串的時(shí)候,它會(huì)被傳進(jìn)構(gòu)造函數(shù),并且重新調(diào)用另一個(gè)函數(shù)。 序言 在今天,JavaScript已經(jīng)成為了網(wǎng)頁(yè)編輯的核心。尤其是過(guò)去的幾年,互聯(lián)網(wǎng)見證了在SPA開發(fā)、圖形處理、交互等方面大量JS庫(kù)的出現(xiàn)。 如果初次打交道,很多人會(huì)覺得js很簡(jiǎn)單...
摘要:它指向構(gòu)造函數(shù)的原型對(duì)象這是原型對(duì)象上的一個(gè)指向構(gòu)造函數(shù)的屬性。先看代碼的構(gòu)造函數(shù)創(chuàng)建一個(gè)的實(shí)例,小豬佩奇敲黑板,劃重點(diǎn),理解這一句整個(gè)問(wèn)題的關(guān)鍵,請(qǐng)多重復(fù)幾遍。也就是說(shuō)小豬佩奇的原型,就是從繼承來(lái)的寫成代碼就是這個(gè)樣子。 ??沒錯(cuò),我就是標(biāo)題黨!你已經(jīng)成功被我騙進(jìn)來(lái)了。來(lái)都來(lái)了,那就聊聊再走唄!接下來(lái)就聽我一本正經(jīng)地跟你說(shuō)道說(shuō)道。 ??Javascript的原型是這門語(yǔ)言的一個(gè)重點(diǎn)和...
摘要:面向?qū)ο笾杏腥筇卣?,封裝,繼承,多態(tài)。這不僅無(wú)法做到數(shù)據(jù)共享,也是極大的資源浪費(fèi),那么引入對(duì)象實(shí)例對(duì)象的屬性指向其構(gòu)造函數(shù),這樣看起來(lái)實(shí)例對(duì)象好像繼承了對(duì)象一樣。實(shí)例對(duì)象的原型指向其構(gòu)造函數(shù)的對(duì)象構(gòu)造器的指向。 前言 為什么說(shuō)是再談呢,網(wǎng)上講解這個(gè)的博客的很多,我開始學(xué)習(xí)也是看過(guò),敲過(guò)就沒了,自以為理解了就結(jié)束了,書到用時(shí)方恨少啊。實(shí)際開發(fā)中一用就打磕巴,于是在重新學(xué)習(xí)了之后分享出來(lái)...
摘要:我的第一篇博客之前學(xué)習(xí)了,但是面向?qū)ο蟛糠忠恢睕]有時(shí)間去學(xué),擱了很久,估計(jì)有大半年了吧。一直支持并不比簡(jiǎn)單,他的面向?qū)ο笠彩怯泻芏鄸|西的,沒有人帶,自己學(xué)是很容易犯暈的。這個(gè)類的每個(gè)對(duì)象共用一個(gè)代碼段。 我的第一篇博客 之前學(xué)習(xí)了JavaScript,但是面向?qū)ο蟛糠忠恢睕]有時(shí)間去學(xué),擱了很久,估計(jì)有大半年了吧。最近又花了點(diǎn)時(shí)間學(xué)習(xí)了一下,很感謝韓順平老師的視頻,讓我受益匪...
閱讀 3750·2021-11-25 09:43
閱讀 2745·2021-11-25 09:43
閱讀 3934·2021-11-24 09:38
閱讀 758·2021-11-18 10:02
閱讀 2320·2021-09-22 15:53
閱讀 3070·2019-08-30 15:44
閱讀 2822·2019-08-30 14:01
閱讀 2846·2019-08-29 15:15