web前端tips:js繼承——原型鏈繼承
原型鏈繼承
原型鏈繼承是 JavaScript 中實現(xiàn)繼承的一種方式,它通過使用原型來實現(xiàn)對象之間的繼承關(guān)系。
在 JavaScript 中,每個對象都有一個原型(prototype),它是一個指向另一個對象的引用。當我們訪問一個對象的屬性時,如果該對象自身沒有該屬性,則會去它的原型上查找,如果原型上也沒有,則會繼續(xù)往上層原型查找,直到找到該屬性或者到達原型鏈的頂端。
原型鏈繼承就是利用這種原型鏈的特性來實現(xiàn)繼承。具體步驟如下:
創(chuàng)建一個父類的構(gòu)造函數(shù),并定義父類的屬性和方法。
創(chuàng)建一個子類的構(gòu)造函數(shù),并將其原型對象指向父類的實例。
在子類的構(gòu)造函數(shù)中添加子類獨有的屬性和方法。
//?1 function?Parent()?{ ??this.arr?=?[1,2,3] } Parent.prototype.getArr?=?function()?{ ??return?this.arr } //?2 function?Child()?{ ??this.name?=?'Child' } Child.prototype?=?new?Parent() //?3 Child.prototype.getName?=?function()?{ ??return?this.name } //?實例化 var?child?=?new?Child() child.getName()?//?'Child' child.getArr()?//?[1,2,3]
通過以上步驟,我們就實現(xiàn)了子類繼承父類的屬性和方法,并且可以在子類中添加自己獨有的屬性和方法。這樣,當我們創(chuàng)建子類的實例時,它會先在自身查找屬性和方法,如果沒有找到,則會去父類的原型上查找,從而實現(xiàn)了繼承。
優(yōu)點
原型鏈繼承方式的優(yōu)點在于?簡單。
缺點
使用原型鏈繼承的一個缺點是,所有子類的實例都共享同一個父類的實例,這可能會導(dǎo)致子類實例之間相互影響。
child.arr.push(4)child.getArr()?//?[1,2,3,4] var?child2?=?new?Child() child2.gerArr()?//?[1,2,3,4],想要的結(jié)果應(yīng)該是[1,2,3]
另外,如果子類需要傳遞參數(shù)給父類的構(gòu)造函數(shù),就無法通過直接調(diào)用父類的構(gòu)造函數(shù)來實現(xiàn),需要通過中間的過程來傳遞參數(shù)。
結(jié)語
牽手 持續(xù)為你分享各類知識和軟件 ,歡迎訪問、關(guān)注、討論 并留下你的小心心?