菜鳥筆記 js的多種繼承方法

2021-10-23 02:20:28 字數 2455 閱讀 4733

//原型鏈繼承:原型鏈上都是例項

//所有子類例項共享父類引用型別屬性,動乙個影響所有、不可傳參

function

parent()

parent.prototype.

getname

=function()

function

child()

//將子類的原型指向父類例項

child.prototype =

newparent()

;var child =

newchild()

;

console.

log(child.

getname()

) console.

log(child.name)

//借用建構函式使用實現繼承&&組合繼承

//經典繼承

function

parent()

function

child()

//***************===

function

parent1

(name)

parent1.prototype.

getname1

=function()

parent1.prototype.*** =

"man"

function

child1

(name,age)

child1.prototype =

newparent1()

var child1 =

newchild1

("wd",23

) console.

log(child1.age)

console.

log(child1.

getname1()

)

//原型式繼承:傳入乙個物件,以其作為原型返回乙個物件

function

creatobj

(obj);f

.prototype = obj;

return

newf()

;}var person =

var son1 =

creatobj

(person)

var son2 =

creatobj

(person)

//引用型屬性會被共享

son1.gf.

push

("zx"

) console.

log(son2.gf)

//寄生組合繼承:最理想的繼承

//解決了組合繼承需要兩次呼叫建構函式的問題,避免了屬性冗餘的問題

function

parent2

(name)

parent2.prototype.*** =

"women"

function

child2

(name,age)

//這裡非常巧妙的用了乙個空白的建構函式 f 替代了一次parent的呼叫

//避免了child3和child2.prototy的引用屬性冗餘

varf

=function()

f.prototype = parent2.prototype

var f1=

newf()

child2.prototype = f1

var child2 =

newchild2

("asclin",12

) console.

log(child2.***)

//封裝寄生構造繼承

//1.傳入父類,返回繼承了父類原型屬性,但沒有任何自身屬性的物件

function

getblankobj

(obj);f

.prototype = obj.prototype;

return

newf()

;}//2.設定子型別的原型為返回的物件

function

prototype

(son, father)

function

parent3

(name)

parent3.prototype.*** =

"women"

function

child3

(name,age)

//3.呼叫方法,先獲得祖父輩以上的屬性,新建例項物件時再去獲取爹的屬性

prototype

(child3,parent3)

;var child3 =

newchild3

("c3",15

) console.

log(child3.***)

原位址鏈結

JS中的多種繼承方式

第一種 原型繼承 子類的原型等於父類的例項 function parent parent.prototype.getx function function child child.prototype newparent child.prototype.gety function let c1 new...

JS實現繼承的多種方式(一)

注 部分名詞和示例 摘自高程及犀牛書,即站在巨人的肩膀上?將父類的屬性及原型方法初始化給例項原型,即讓乙個引用型別值繼承另乙個引用型別的屬性和方法 function supertype supertype.prototype.getsupervalue function function subty...

前端JS實現繼承的多種方式

定義乙個父類 function father name this.color red blue 原型方法 father.prototype.age 18 father.prototype.sayage function 1.原型鏈繼承 將父類的例項作為子類的原型 function son name ...