国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術(shù)干貨  > 如何講清楚JS原型鏈?

            如何講清楚JS原型鏈?

            來源:千鋒教育
            發(fā)布人:qyf
            時間: 2022-10-10 15:59:40 1665388780

              先看一個典型的單向鏈表

            1

              上面這段代碼,是一個典型的單向鏈表

              我們只能通過n.next來找到下一個節(jié)點

              但是沒有辦法從當前節(jié)點找到上一個節(jié)點

            2

              不過這和原型鏈有什么關(guān)系呢?

              目前還沒有關(guān)系。

              原型對象從哪來?

            3

              分析上面這段代碼

              為什么obj明明是空的,卻還能調(diào)用toString方法?

              這toString方法是哪里來的呢?

              再比如我們的數(shù)組對象

            4

              其實,這些方法都來自于一個叫做原型的家伙

              我們可以使用 對象.__proto__ 的形式把原型對象打印出來

            5

              這是所有對象的一個隱式屬性, 也就是正常情況下打印對象, 我們是看不到這個屬性的

              但我們依然可以通過__proto__ 這樣一個比較奇怪的屬性名字來訪問原型對象

              這個屬性名稱訪問起來確實不夠方便,實際上它還有另外一種訪問方式

              也是一種比較正式的訪問方式, 就是通過函數(shù)名來訪問

              例如看下面這個例子

            6

              現(xiàn)在我們大概有了一些疑問

              · 1.原型對象中的所有屬性,實例對象都能隨便訪問嗎?

              · 2.每個實例對象都有自己的原型對象, 還是大家共用一個?

              · 3.實例對象自己的屬性和原型的屬性沖突了, 會訪問誰呢?

              · 4.原型對象跟繼承有什么關(guān)系?

              · 5.原型鏈又是怎么來的?

              我們依次來解決這幾個疑問

              · 原型對象中的所有屬性,實例對象都能隨便訪問嗎?

              廢話不多說, 我們來試驗一下, 就知道結(jié)果

            7

              在上面的代碼中,我們創(chuàng)建一個構(gòu)造函數(shù) Phone

              同時我們給原型對象,添加了 price、color兩個屬性

              同時添加了 playmusic、phonecall兩個方法

              接下來我們通過實例對象來訪問一下這些內(nèi)容

            8

              可以看到,原型中的屬性和方法都可以被實例對象直接訪問!

              · 每個實例對象都有自己的原型對象, 還是大家共用一個?

              這是一道非常簡單的數(shù)學證明題,證明過程如下:

            9

              最終結(jié)論是, 所有實例對象共享同一個原型對象

              · 實例對象自己的屬性和原型的屬性沖突了, 會訪問誰呢?

              我們再來試驗一下

            10

              可以看到, 如果對象本身存在這個屬性或方法, 會優(yōu)先訪問自己的

              如果沒有, 則訪問原型的屬性, 訪問過程如下圖

            11

              · 原型對象跟繼承有什么關(guān)系呢 ?

              請你再思考一個問題

              如果原型也是一個對象

              那么它必然也應該有自己的原型對象,不是嗎?

              我們可以通過 p1.__proto__.__proto__ 進行訪問

            12

              我們把圖畫的再簡單一點

            13

              從圖中可以看出,只要原型對象一直存在

              對象P1就擁有了所有原型對象的能力, 我們也管這個叫做 繼承

              而這些原型對象之間是什么關(guān)系呢?

              p1

              p1.__proto__

              p1.__proto__.__proto__

              p1.__proto__.__proto__.__proto__

              原型鏈, 因此而得名

              需要補充的問題

              原型對象真的沒有盡頭嗎?

              當然不是的, 原型對象由瀏覽器自動創(chuàng)建, 當然也有它自己的規(guī)則

              規(guī)則如下:

              1.每個構(gòu)造函數(shù)在誕生的時候, 都會創(chuàng)建一個該函數(shù)的實例對象作為默認原型

              相當于 Phone.prototype = new Phone();

              2.而這個原型對象的原型, 則默認指向Object.prototype

              相當于 Phone.prototype.__proto__ = Object.prototype;

              3.當然, Object.prototype 也是它自己的實例

              相當于 Object.prototype = new Object();

              4. 但是, Object.prototype不再擁有原型對象

              相當于 Object.prototype.__proto__ = null

              5. 因此,原型對象是有上限的

              p1.__proto__ 可訪問

              p1.__proto__.__proto__ 可訪問

              p1.__proto__.__proto__.__proto__ 為null

              原型的最重要的作用就是擴展能力

            14

            tags:
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學 138****2860 剛剛成功領(lǐng)取
            王同學 131****2015 剛剛成功領(lǐng)取
            張同學 133****4652 剛剛成功領(lǐng)取
            李同學 135****8607 剛剛成功領(lǐng)取
            楊同學 132****5667 剛剛成功領(lǐng)取
            岳同學 134****6652 剛剛成功領(lǐng)取
            梁同學 157****2950 剛剛成功領(lǐng)取
            劉同學 189****1015 剛剛成功領(lǐng)取
            張同學 155****4678 剛剛成功領(lǐng)取
            鄒同學 139****2907 剛剛成功領(lǐng)取
            董同學 138****2867 剛剛成功領(lǐng)取
            周同學 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT
            大數(shù)據(jù)測試工程師需要具備哪些技能?

            一、理解大數(shù)據(jù)概念大數(shù)據(jù)測試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲、MapReduce、實時計算等。他們還需要了解如何處理大規(guī)模的...詳情>>

            2023-10-14 23:43:03
            為什么SpringBoot的 jar 可以直接運行?

            一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫,它是一種壓縮文件格式,可以將Java項目的類文件、資源文件以及依賴庫等...詳情>>

            2023-10-14 23:01:49
            站群服務器是什么?

            站群服務器的含義與用途站群服務器主要用于支持站群,即由一組相互鏈接的網(wǎng)站組成的群體。這些網(wǎng)站通常由同一組織或個人擁有,并且經(jīng)常會互相鏈...詳情>>

            2023-10-14 22:46:12
            自編碼器是什么?

            一、自編碼器原理自編碼器的設(shè)計靈感源于神經(jīng)科學中關(guān)于感知系統(tǒng)的認知原理,它的核心思想是將輸入數(shù)據(jù)經(jīng)過編碼過程,形成一個隱藏層的特征表示...詳情>>

            2023-10-14 22:41:10
            什么是云網(wǎng)融合?

            一、云網(wǎng)融合的定義云網(wǎng)融合是指將云計算與網(wǎng)絡(luò)技術(shù)相結(jié)合,實現(xiàn)資源的共享、業(yè)務的協(xié)同,將網(wǎng)絡(luò)與云端服務深度融合,提供更靈活、高效、安全的...詳情>>

            2023-10-14 22:31:47