麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

如何講清楚JS原型鏈?

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

  先看一個典型的單向鏈表

1

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

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

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

2

  不過這和原型鏈有什么關系呢?

  目前還沒有關系。

  原型對象從哪來?

3

  分析上面這段代碼

  為什么obj明明是空的,卻還能調用toString方法?

  這toString方法是哪里來的呢?

  再比如我們的數組對象

4

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

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

5

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

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

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

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

  例如看下面這個例子

6

  現在我們大概有了一些疑問

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

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

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

  · 4.原型對象跟繼承有什么關系?

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

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

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

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

7

  在上面的代碼中,我們創建一個構造函數 Phone

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

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

  接下來我們通過實例對象來訪問一下這些內容

8

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

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

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

9

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

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

  我們再來試驗一下

10

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

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

11

  · 原型對象跟繼承有什么關系呢 ?

  請你再思考一個問題

  如果原型也是一個對象

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

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

12

  我們把圖畫的再簡單一點

13

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

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

  而這些原型對象之間是什么關系呢?

  p1

  p1.__proto__

  p1.__proto__.__proto__

  p1.__proto__.__proto__.__proto__

  原型鏈, 因此而得名

  需要補充的問題

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

  當然不是的, 原型對象由瀏覽器自動創建, 當然也有它自己的規則

  規則如下:

  1.每個構造函數在誕生的時候, 都會創建一個該函數的實例對象作為默認原型

  相當于 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:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 俺去ye| 女人与大拘交在线播放| 交换年轻夫妇5| 大陆三级理论电影有哪些| 日本哺乳期xxxx丨| 亚洲理论电影在线观看| 啊…别了在线观看免费下载| 国模人体沟沟| 榴莲榴莲榴莲榴莲官网| 一级做α爱**毛片| 欧美亚洲一区二区三区| 国产无套粉嫩白浆在线观看| 精品中文字幕一区在线| a级毛片毛片免费观看久潮喷| 天堂成人在线观看| 粗大的内捧猛烈进出视频| 日本一卡二卡≡卡四卡精品| 国产亚洲情侣一区二区无| 久久这里只精品99re免费| 国产原创中文字幕| 高h全肉动漫在线观看| 日本高清不卡在线| 日本黄色电影在线| 污网站在线观看免费| 久久精品久久久久观看99水蜜桃| 欧美综合自拍亚洲综合图| 怡红院视频在线观看| 啊v在线播放| 国产精华av午夜在线观看| 玩乡下小处雏女免费视频| 麻豆女神吴梦梦| 亚洲妇熟xxxx妇色黄| 欧美一级片免费在线观看| 乱妇伦| 欧美69影院| 久久精品国产久精国产| 精品国产欧美一区二区| 陪读妇乱子伦小说| 日本精品久久久久中文字幕| 污视频软件大全| 美女羞羞视频免费网站|