日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript原型链的理解

發布時間:2025/3/21 javascript 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript原型链的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、原型鏈的概念

JavaScript是一門面向對象的編程語言,JavaScript 中的所有事物都是對象,并且對象與對象之間不是彼此獨立的,而是有“繼承”關系的。

這種“繼承”關系與Java或者C#中的繼承不同。Java或C#中是有類的概念的,子類繼承父類,通過extends關鍵字實現;而JavaScript中沒有真正意義上的class(類),但有與之類似的概念——原型對象;A繼承B,則A的“__proto__”屬性會指向B的“prototype”屬性,從而有以下示意圖:

?

A與B的關系為: A.__proto__?? ---------->?? B.prototype? , 這句話的意思就是,A的原型(__proto__) 指向 B的原型對象(prototype)。

從A繼承B的示意圖中,我們看到一條具有指向關系的鏈,那么這是不是就是今天的主題——原型鏈 呢?答案是:不是

原型鏈要求末尾節點為null,B.prototype 不等于null,誰的原型會為null呢?答案是:Object對象的原型對象——Object.prototype,所以有以下示意圖:

?

所以,我把原型鏈的定義概括為:一群具有繼承關系的對象,通過__proto__屬性建立指向關系,并最終指向null,從而形成一條指向關系鏈,我們稱之為原型鏈。

二、為什么會有這樣的指向關系

現在,雖然知道了什么是原型鏈,但是為什么是這樣的指向關系,形成這樣的一條鏈,下面我們繼續來探討:

首先,了解概念:

①、對象的分類??? 如上文所說,JavaScript中所有的事物都是對象,而這些對象,可以分為兩大類:函數對象普通對象。分類的依據是:是否具有原型對象(prototype),或者是否具有prototype屬性。函數對象具有prototype屬性,而普通對象沒有;

②、prototype??? 原型對象,對象中的所有屬性和方法,將繼承給子對象,由子對象們共享;

③、__proto__ ? ?原型。任何由繼承而來的對象,都有且僅有一個原型,并且由其__proto__屬性指明。

由于JavaScript中一切皆對象,并且這些對象最終都繼承自Object對象,所以在原型鏈中末尾的兩個節點,一定是Object.prototype和null。

三、對象

前文中,我們無數次提到了一個概念,那就是對象,什么是對象?對象即屬性和方法的集合,最典型的

var obj = {name: 'hjx',age: 24,sayHello: function() {console.log('Hello!');} }

obj既為一個對象,此對象有屬性name,age,有方法sayHello()。僅以“屬性和方法的集合”這幾個字的解釋,我們還很難理解JavaScript中的繼承關系和原理,所以,引入一下概念:

、隱式屬性?? 由__proto__屬性指向的屬性和方法。

、顯示屬性? ? 非__proto__屬性指向的屬性和方法,顯示屬性分為共享屬性和非共享屬性

③、共享屬性??? 繼承給子對象,由子對象共享的屬性和方法。(共享:所有子對象的公共資源,一旦改變,所有子對象訪問時均已改變。本質上是在繼承的時候,所有子對象的__proto__屬性指向它,在內存中此屬性僅此一份,子對象和父對象均可去讀寫)

④、非共享屬性(本地屬性)??? 繼承給子對象時,由子對象單獨享有的屬性和方法,也成為本地屬性。(單獨享有:繼承時,在每個子對象的內存空間中都復制了一份,在子對象中各自獨立)

用一個等式來表達對象: 對象? =? 顯示屬性(共享屬性 + 本地屬性) + 隱式屬性

四、關系圖

關系圖總結:

①、子對象的__proto__屬性指向父對象的prototype屬性(子對象的原型指向父對象的原型對象);

②、Object對象的__proto__屬性指向Function對象的prototype屬性(Object對象的原型指向Function對象的原型對象);

③、Function對象的__proto__屬性指向自己的prototype屬性(Function對象的原型指向自己的原型對象);

④、Function對象的prototype屬性的__proto__屬性指向Object的prototype屬性(Function對象的原型對象的原型指向Object對象的原型對象,因為,Function對象的原型對象是一個對象,由Object對象繼承而來)

⑤、Object對象的prototype屬性的__proto__屬性指向null(Object對象的原型對象的原型指向null,因為,一切對象的原型最終都指向Object對象的原型對象,然而Object對象的原型對象又是一個對象,JavaScript規定它指向null,所以Object對象的原型對象Object.prototype總是在原型鏈上,除null意外的頂端位置)

?

完~

轉載于:https://www.cnblogs.com/hjx-blog/p/9188526.html

總結

以上是生活随笔為你收集整理的JavaScript原型链的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丁香花完整视频在线观看 | 91麻豆国产视频 | 嫩草视频在线观看免费 | 日本黄色视 | 成人午夜精品福利免费 | 综合久久久久综合 | 无码人妻丰满熟妇区毛片蜜桃精品 | 婷婷.com | 国产精品91在线 | 成人www| 日日夜夜欧美 | 欧美国产免费 | av电影中文字幕 | 各种含道具高h调教1v1男男 | 日产精品一区二区 | 欧美乱轮 | 高h教授1v1h喂奶 | 国产精品扒开做爽爽爽的视频 | 久操久热 | 亚洲国产精华液网站w | www四虎影院 | 日本一区二区视频在线播放 | 亚洲男人在线 | 午夜一区二区三区免费 | 天天拍夜夜操 | 国产又爽又黄的激情精品视频 | 国产免费观看视频 | 99香蕉网 | 国产日韩欧美精品一区二区 | 国产h视频在线 | 精品一区二区三区精华液 | 有码在线 | 日韩av一区二区在线 | 欧美日韩天堂 | 欧美日韩一区二区区 | 深夜福利视频在线 | 亚洲精品激情 | 青青草视频在线观看免费 | 国产精品成人一区 | 337p粉嫩大胆噜噜噜亚瑟影院 | 午夜精品久久久久久久久久 | 久久特黄| 成年人在线视频 | 亚洲成人资源 | 国产一区二区亚洲 | 亚洲综合精品国产一区二区三区 | 日韩大尺度视频 | 日韩操操 | 激情欧美一区二区 | 亚洲v在线观看 | 国产一区欧美日韩 | 久久久天堂国产精品女人 | 国产小视频在线观看 | 中国女人一级片 | 青青伊人av| 国内精品久久久久 | 亚洲最大成人av | 中文字幕一区二区人妻电影丶 | 朝鲜一级黄色片 | 又黄又爽一区二区三区 | 美腿丝袜亚洲色图 | 午夜激情视频在线观看 | 一区二区精品久久 | 亚洲一区二区三区香蕉 | 色播一区二区 | 国精产品99永久一区一区 | 国产原创在线 | 韩国中文字幕 | 黄色一级播放 | 麻豆传媒网站在线观看 | 哺乳期给上司喂奶hd | 精品国产成人av在线免 | 日本免费网 | 黑人操亚洲女 | 白白色免费视频 | 天天搞夜夜 | 国产精品成人一区二区三区 | 人人干超碰 | 久久性精品 | 麻豆午夜 | 97人妻精品一区二区免费 | 国产精品果冻传媒 | 91亚洲国产成人久久精品麻豆 | 好爽又高潮了毛片 | 成人精品在线播放 | 午夜毛片电影 | 亚洲激情网 | 美丽的小蜜桃2:美丽人生 | 靠逼动漫 | 在线免费看黄色片 | 亚洲影音 | 国产精品久久久久久久久绿色 | 日韩一级片免费 | av免费毛片 | 黑人番号 | 网爆门在线 | 成人免费av网站 | 日本偷拍一区 | 中文字幕日韩一级 |