//原型鏈繼承:原型鏈上都是例項
//所有子類例項共享父類引用型別屬性,動乙個影響所有、不可傳參
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 ...