一篇文章让你搞懂原型和原型链
每一個構造函數在被創建的時候,會自動創建一個相應的對象,這個對象就是原型對象,這個函數有一個指向該對象的指針。舉個例子:
?下面創建了一個函數person。
function person () {
}
則 person.prototype 就是原型對象。而原型對象里面又有一個指針,指向函數,即person.prototpe.constructor === person(函數)
接下來創建一個實例:
const p1 = new person();
實例可以訪問原型對象的所有屬性和方法。咱們可以手動給原型添加方法。person.prototype.name = '飛機'
然后打印一下? p1.name? ? // 飛機
實例里面也有一個指針指向原型對象 即 p1._proto_ === person.prototype? ?(這個指針就是原型鏈的關鍵所在)
然后你可能也會有一個大膽的想法:既然實例可以繼承原型對象的所有屬性和方法,那如果我讓另一個函數的原型作為這個函數的實例的話,另一個函數不就就可以訪問這個原型的屬性和方法了。
接下來再創建一個函數
function people (){
}
當然people.prototype就是 people 這個函數的原型了
那么,咱們就把這個原型當作person函數的實例
people.prototype = new person();
然后咱們 給 people 也創建一個實例,如果這個實例的name為 飛機 ,那么說明這個繼承是成功的
const pe1 = new perple();
打印一下 pe1.name? ? // 飛機
這里需要注意的是,因為people的原型被重寫了,所以people原型的constructor 就是 person原型的constructor
下面是我在控制臺打印的一些信息,作為輔助
?
轉載于:https://www.cnblogs.com/hamili/p/10960613.html
總結
以上是生活随笔為你收集整理的一篇文章让你搞懂原型和原型链的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 36.两个链表的第一个公共结点——剑指o
- 下一篇: 【Python】解析Python中类的使