摘要:最近看到一個關于原型鏈的問題,回顧一下原型鏈的知識點。說說為什么為什么是。首先不是自身的屬性,而是原型鏈上的,即的原型中。類似通過這樣來找到的值。,不是復制了對象,而是把指向了,所以對的修改會影響到的值。再看看這張圖一切都明朗了。
最近看到一個關于原型鏈的問題,回顧一下原型鏈的知識點。
function person(name) { this.name = name; this.showME = function() { alert(this.name); } }; person.prototype.form = function() { alert("i come form prototype") } var father = new Person("JS"); alert(father.constructor); function Subper() { ... } SubPer.prototype = father; Sub.protptype.constructor = subper; var son = new Subper(); son.showMe(); //JS son.from(); //i come form prototype alert(father.constructor); //function Subper(){} alert(son.constructor); //function SubPer() {} alert(SubPer.prototype.constructor); //function SubPer() {}
說說為什么father.constructor 為什么是function Subper(){}。
首先father.constructor 不是 father 自身的屬性,而是原型鏈上的,即father的prototype原型中。類似通過 father.__proto__.constructor 這樣來找到 constructor 的值。就這個問題而言,father.__proto__ 指向的是 Person.prototype。Subper.prototype = father ,不是復制了 father 對象,而是把 Subper.prototype 指向了 father,所以對Subper.prototype 的修改會影響到 father 的值。
此時Subper.prototype.constructor屬性實際就是father.__proto__.constructor。因此當Subper.prototype.constructor = Subper 時,son.constructor = father.__proto__.constructor =person.prototype.constrctor = Subper。
再看看這張圖一切都明朗了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89926.html
摘要:的隱式原型是母,母是由構造函數構造的,但函數的隱式原型又是。。。。可能是考慮到它也是由構造函數生成的吧,所以返回的值也是。 showImg(https://segmentfault.com/img/bVyLk0); 首先,我們暫且把object類型和function類型分開來,因為 function是一個特殊的對象類型,我們這里這是便于區分,把function類型單獨拿出來。順便一提,...
摘要:根據定義,沒有原型,并作為這個原型鏈中的最后一個環節。偷偷貼在這里再知道了原型原型鏈,那一個對象的過程知道嗎,能手寫一個嗎。 似乎生活中常常會遇到這種情況,你去一家公司面試,前面面的都挺好,你覺得你對基礎算法的了解很好,各種排序,紅黑樹,二叉樹,深度/廣度優先算法都答出來了,leetcode上的若干困難題目也都答上來了,然后面試官說,那么好吧,介紹一下你對原型的看法吧。 ???我頭發。...
摘要:實例可以通過代理來找到它,并用來檢測其構造函數。經典繼承圖這也是通過構造函數來創建對象,但是在這一系列的對象和實例之間我們的焦點是放在原型鏈上。盡管,但構造函數的屬性并不是對象自己的屬性,它實際上是通過尋找原型鏈獲得的,即所指向的地方。 繼承是面向對象編程語言的一大核心功能點,雖然JavaScript并不是一門真正意義上的面向對象的編程語言,但也通過某種手段實現了繼承這一功能,最常見的...
摘要:構造函數的屬性指向原型對象原型對象的屬性指向構造函數實例對象的指向原型對象所有引用類型默認都繼承了,而這個繼承也是通過原型鏈實現的。第一種方式是使用操作符,只要用這個操作符來測試實例與原型鏈中出現過的構造函數,結果就會返回。 理解對象 首先對象的定義是:無序屬性的集合,其屬性可以包含基本值、對象或者函數。嚴格來講,這就相當于說對象是一組沒有特定順序的值。對象的每個屬性或方法都有一個名...
閱讀 1763·2021-10-11 10:59
閱讀 2401·2021-09-30 09:53
閱讀 1765·2021-09-22 15:28
閱讀 2795·2019-08-29 15:29
閱讀 1557·2019-08-29 13:53
閱讀 3207·2019-08-29 12:34
閱讀 2848·2019-08-26 10:16
閱讀 2660·2019-08-23 15:16