久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

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

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

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

        如何講清楚JS原型鏈?

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

          先看一個(gè)典型的單向鏈表

        1

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

          我們只能通過(guò)n.next來(lái)找到下一個(gè)節(jié)點(diǎn)

          但是沒(méi)有辦法從當(dāng)前節(jié)點(diǎn)找到上一個(gè)節(jié)點(diǎn)

        2

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

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

          原型對(duì)象從哪來(lái)?

        3

          分析上面這段代碼

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

          這toString方法是哪里來(lái)的呢?

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

        4

          其實(shí),這些方法都來(lái)自于一個(gè)叫做原型的家伙

          我們可以使用 對(duì)象.__proto__ 的形式把原型對(duì)象打印出來(lái)

        5

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

          但我們依然可以通過(guò)__proto__ 這樣一個(gè)比較奇怪的屬性名字來(lái)訪問(wèn)原型對(duì)象

          這個(gè)屬性名稱訪問(wèn)起來(lái)確實(shí)不夠方便,實(shí)際上它還有另外一種訪問(wèn)方式

          也是一種比較正式的訪問(wèn)方式, 就是通過(guò)函數(shù)名來(lái)訪問(wèn)

          例如看下面這個(gè)例子

        6

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

          · 1.原型對(duì)象中的所有屬性,實(shí)例對(duì)象都能隨便訪問(wèn)嗎?

          · 2.每個(gè)實(shí)例對(duì)象都有自己的原型對(duì)象, 還是大家共用一個(gè)?

          · 3.實(shí)例對(duì)象自己的屬性和原型的屬性沖突了, 會(huì)訪問(wèn)誰(shuí)呢?

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

          · 5.原型鏈又是怎么來(lái)的?

          我們依次來(lái)解決這幾個(gè)疑問(wèn)

          · 原型對(duì)象中的所有屬性,實(shí)例對(duì)象都能隨便訪問(wèn)嗎?

          廢話不多說(shuō), 我們來(lái)試驗(yàn)一下, 就知道結(jié)果

        7

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

          同時(shí)我們給原型對(duì)象,添加了 price、color兩個(gè)屬性

          同時(shí)添加了 playmusic、phonecall兩個(gè)方法

          接下來(lái)我們通過(guò)實(shí)例對(duì)象來(lái)訪問(wèn)一下這些內(nèi)容

        8

          可以看到,原型中的屬性和方法都可以被實(shí)例對(duì)象直接訪問(wèn)!

          · 每個(gè)實(shí)例對(duì)象都有自己的原型對(duì)象, 還是大家共用一個(gè)?

          這是一道非常簡(jiǎn)單的數(shù)學(xué)證明題,證明過(guò)程如下:

        9

          最終結(jié)論是, 所有實(shí)例對(duì)象共享同一個(gè)原型對(duì)象

          · 實(shí)例對(duì)象自己的屬性和原型的屬性沖突了, 會(huì)訪問(wèn)誰(shuí)呢?

          我們?cè)賮?lái)試驗(yàn)一下

        10

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

          如果沒(méi)有, 則訪問(wèn)原型的屬性, 訪問(wèn)過(guò)程如下圖

        11

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

          請(qǐng)你再思考一個(gè)問(wèn)題

          如果原型也是一個(gè)對(duì)象

          那么它必然也應(yīng)該有自己的原型對(duì)象,不是嗎?

          我們可以通過(guò) p1.__proto__.__proto__ 進(jìn)行訪問(wèn)

        12

          我們把圖畫(huà)的再簡(jiǎn)單一點(diǎn)

        13

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

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

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

          p1

          p1.__proto__

          p1.__proto__.__proto__

          p1.__proto__.__proto__.__proto__

          原型鏈, 因此而得名

          需要補(bǔ)充的問(wèn)題

          原型對(duì)象真的沒(méi)有盡頭嗎?

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

          規(guī)則如下:

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

          相當(dāng)于 Phone.prototype = new Phone();

          2.而這個(gè)原型對(duì)象的原型, 則默認(rèn)指向Object.prototype

          相當(dāng)于 Phone.prototype.__proto__ = Object.prototype;

          3.當(dāng)然, Object.prototype 也是它自己的實(shí)例

          相當(dāng)于 Object.prototype = new Object();

          4. 但是, Object.prototype不再擁有原型對(duì)象

          相當(dāng)于 Object.prototype.__proto__ = null

          5. 因此,原型對(duì)象是有上限的

          p1.__proto__ 可訪問(wèn)

          p1.__proto__.__proto__ 可訪問(wèn)

          p1.__proto__.__proto__.__proto__ 為null

          原型的最重要的作用就是擴(kuò)展能力

        14

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

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

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

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

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

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

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

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

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

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

        2023-10-14 22:31:47
        竹北市| 独山县| 扶风县| 元江| 兴和县| 九寨沟县| 新化县| 基隆市| 太湖县| 镶黄旗| 临清市| 白水县| 武强县| 鱼台县| 沐川县| 英山县| 通化市| 锡林郭勒盟| 沙坪坝区| 万州区| 涿州市| 玉龙| 图木舒克市| 阿坝县| 邻水| 新巴尔虎右旗| 梅河口市| 久治县| 景东| 井冈山市| 慈利县| 海口市| 崇文区| 大竹县| 边坝县| 林口县| 漠河县| 连城县| 白银市| 高陵县| 腾冲县|