无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【四】原型鏈

2023-08-20 18:05 作者:馳驥  | 我要投稿


本篇章主要講述原型鏈相關(guān)知識點(diǎn),為后續(xù)的函數(shù)篇章先鋪墊一定的前綴知識,也承接了引用類型篇章的知識。

面試回答

1.原型鏈:原型鏈主要有三部分構(gòu)成:原型、構(gòu)造函數(shù)、實(shí)例,實(shí)例可以通過new構(gòu)造函數(shù)獲取,構(gòu)造函數(shù)可以通過實(shí)例的constructor或者原型的constructor獲取,原型可以通過實(shí)例的__proto__或者構(gòu)造函數(shù)的prototype獲取。原型也可以通過__proto__獲取父級元素的原型,直到最終拿到null。

知識點(diǎn)

1.原型鏈



圖片為我對于原型鏈的理解,一起讓我們由易入難去理解,原型鏈中的三個主體:原型、構(gòu)造函數(shù)、實(shí)例對象。

原型

可以簡單理解為儲存方法和屬性的對象(JS萬物皆可為對象)

構(gòu)造函數(shù)

只要被new過的函數(shù)就可以被稱為構(gòu)造函數(shù),每個函數(shù)都有一個prototype屬性,它指向該函數(shù)的原型,構(gòu)造函數(shù)也是如此。構(gòu)造函數(shù)里有兩個特殊的存在:Object、Function,前者在所有的JS對象的原型鏈上,后者則是所有的構(gòu)造函數(shù)(包括它自己)的都是Function的實(shí)例對象,所以

實(shí)例對象

由于不同的創(chuàng)建方式有差異,因此從創(chuàng)建方式來理解,一個為字面量方式;一個為構(gòu)造器方式;一個為Object.create方式。三者的差異在于不同的創(chuàng)建方式的原型不同。

字面量方式:let a={} ?,原型為function Object的prototype,相當(dāng)于new Object()

構(gòu)造器方式:let p = new Person(),原型為Person函數(shù)的prototype

Object.create()方式:let a={} ? let b=Object.create(a) ,原型為a

按照上述理解,可以構(gòu)建出如下思維導(dǎo)圖:


然后再梳理一下實(shí)例對象、構(gòu)造函數(shù)、原型之間的轉(zhuǎn)換:

可得,如下思維導(dǎo)圖:


由于__proto__是任何對象都有的屬性,而JS中萬物皆可為對象,因此可以通過__proto__不斷連接其父級原型對象,到了父級原型對象這一步,同樣也會有新的原型圈(就是下圖的閉環(huán)),最后會到達(dá)頂層Object.prototype,它的 __proto__指向null結(jié)束,這條鏈路就被稱為原型鏈,同時JS引擎查找屬性時也會按照原型鏈的方向逐層去查找直到找到為止。

按照上述理解,并添以簡單代碼加以理解,可得思維導(dǎo)圖:


當(dāng)然,其中還有不明確的點(diǎn),那么就需要自己去搜索理解,搞明白每一個點(diǎn)所代表的意義和作用,給個原型鏈的經(jīng)典圖用以檢驗(yàn),從左至右的三列分別對應(yīng)的是實(shí)例、構(gòu)造函數(shù)、原型:

最后

走過路過,不要錯過,點(diǎn)贊、收藏、評論三連~


【四】原型鏈的評論 (共 條)

分享到微博請遵守國家法律
句容市| 郁南县| 宁明县| 绥棱县| 龙口市| 昌图县| 昌邑市| 宝清县| 柯坪县| 东乌珠穆沁旗| 临沂市| 东海县| 清水县| 南丹县| 屏山县| 昌邑市| 莱阳市| 漯河市| 临汾市| 崇阳县| 石渠县| 永寿县| 闽清县| 宁蒗| 农安县| 巴中市| 治县。| 海原县| 元氏县| 密山市| 聂荣县| 内丘县| 五台县| 肃宁县| 彰化县| 静海县| 乌恰县| 阳西县| 鹤壁市| 长岭县| 咸宁市|