摘要:圖片引自看到這張圖的第一感覺是對于完整的原型鏈大家平常可能接觸的并不多,容易忘記,單看圖并不是很好理解,以下是在控制臺的輸出首先要知道的作用是一個對象擁有的內置屬性請注意是函數的內置屬性,是對象的內置屬性,是內部使用尋找原型鏈的屬性。
圖片引自https://juejin.im/post/5b44a4...
看到這張圖的第一感覺是
對于完整的原型鏈大家平常可能接觸的并不多,容易忘記,單看圖并不是很好理解,以下是在控制臺的輸出
首先要知道_proto_的作用,__proto__是一個對象擁有的內置屬性(請注意:prototype是函數的內置屬性,__proto__是對象的內置屬性),是JS內部使用尋找原型鏈的屬性。指向自身構造函數的原型,同理調用prototype可以看作調用者是函數,__proto__調用者可以看成是對象
以Object開始直到回到Object
Object.constructor => ? Function() { [native code] } 等同于 function Function { [native code] } Object的構造函數其實是一具名函數 Function Object.constructor.constructor => ? () { [native code] } 等同于匿名函數 function(){ [native code] } Object.constructor.__proto__ == Object.constructor.prototype => ? () { [native code] } Object.constructor.__proto__.constructor => ? Function() { [native code] } 等同于 function Function { [native code] } Object.constructor.__proto__.__proto__ => Object.prototype 如下 {constructor: ?, __defineGetter__: ?, __defineSetter__: ?, hasOwnProperty: ?, __lookupGetter__: ?,?…} Object.constructor.__proto__.__proto__.constructor => Object 又回到了自己 Object.constructor.__proto__.__proto__.__proto__ => Null
至于程序為什么這么設計,這里就不再討論了,有一點 一開始學習記住是什么比為什么更重要,因為誰也解釋不了1+1為什么等于二,記憶很重要
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100498.html
摘要:原型鏈和對象的原型是對象實例和它的構造函數之間建立的鏈接,它的值是構造函數的。對象的原型根據上文提到的構造調用函數的時候會創建一個新對象,自動將的原型指向構造函數的對象。 showImg(https://segmentfault.com/img/remote/1460000020185197); JS的原型、原型鏈一直是比較難理解的內容,不少初學者甚至有一定經驗的老鳥都不一定能完全說清...
摘要:從實現角度分析原型鏈歡迎來我的博客閱讀從實現角度分析原型鏈網上介紹原型鏈的優質文章已經有很多了,比如說作為補充,就讓我們換個角度,從實現來分析一下吧本文假設你對原型鏈已經有所了解。 從實現角度分析js原型鏈 歡迎來我的博客閱讀:《從實現角度分析js原型鏈》 網上介紹原型鏈的優質文章已經有很多了,比如說: https://github.com/mqyqingfeng/Blog/issu...
摘要:相當于在用原型繼承編寫復雜代碼前理解原型繼承模型十分重要。同時,還要清楚代碼中原型鏈的長度,并在必要時結束原型鏈,以避免可能存在的性能問題。 js是一門動態語言,js沒有類的概念,ES6 新增了class 關鍵字,但只是語法糖,JavaScript 仍舊是基于原型。 至于繼承,js的繼承與java這種傳統的繼承不一樣.js是基于原型鏈的繼承. 在javascript里面,每個對象都有一...
摘要:圖片描述缺點是無法實現多繼承可以在構造函數中,為實例添加實例屬性。 對象的方法 Object.assign() 對象可以簡寫 ,如果 key 和 value 相等則可以簡寫 let name = xm; let age = 2; let obj = { name, age, fn(){ // 可以省略函數關鍵字和冒號: console.log(2...
摘要:構造函數,實例,原型三者的關系如下圖構造函數是構成整個原型鏈的關鍵,是他利用將原型傳給了后代。因此,通過操縱構造函數的,就能夠操縱原型鏈,從而對原型鏈進行自在的拼接。 要理解js的原型鏈主要就是理清楚以下三者的關系: 構造函數的protitype屬性 對象的__proto__屬性 對象的constructor屬性 在js中,函數作為一等公民,它是一個對象,可以擁有自己的屬性,可...
摘要:二構造函數我們先復習一下構造函數的知識上面的例子中和都是的實例。這兩個實例都有一個構造函數屬性,該屬性是一個指針指向。原型鏈其中是對象的實例。 一. 普通對象與函數對象 JavaScript 中,萬物皆對象!但對象也是有區別的。分為普通對象和函數對象,Object 、Function 是 JS 自帶的函數對象。下面舉例說明 var o1 = {}; var o2 =new Objec...
閱讀 2785·2021-10-14 09:42
閱讀 3608·2021-10-11 10:59
閱讀 2941·2019-08-30 11:25
閱讀 3074·2019-08-29 16:25
閱讀 3224·2019-08-26 17:40
閱讀 1225·2019-08-26 13:30
閱讀 1143·2019-08-26 11:46
閱讀 1329·2019-08-23 15:22