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