js實現繼承的三種方式

2021-09-28 12:32:42 字數 1627 閱讀 2159

1.借用建構函式

//父類

function

parent()

//子類

function

child

(name)

parent.protorype.

show

=function()

//給父類的原型物件上加乙個show方法,此時子類例項化出來的物件就訪問不到該方法

/** * 例項化

*/var s1 =

newchild

("zhangsan");

//此時s1物件中就有了父類的arr屬性

缺點:不能訪問父類建構函式原型鏈上的屬性和方法

2.借用原型鏈

//父類

function

parent()

//子類

function

child

(name)

child.prototype =

newparent()

;//將parent例項物件賦值給child原型物件

//child類中沒有arr這個屬性,所以會去它的原型物件上去找

/** * 例項化

*/var s1 =

newchild

("zhangsan");

//此時s1物件中就有了父類的arr屬性

var s2 =

newchild

("lisi");

s1.__proto__===s2.__proto__//true

優點:子類物件繼承了父類建構函式的原型物件

缺點:子類建構函式建立出來的物件共用同乙個原型物件

3.組合繼承

//父類

function

parent()

//子類

function

child

(name)

child.prototype =

newparent()

;/**

1. 例項化

*/var s1 =

newchild

("zhangsan");

var s2 =

newchild

("lisi"

);

優點:解決了子類建構函式建立出來的物件共用乙個原型物件的問題,同時也繼承了父類原型物件上的屬性和方法

缺點: 1. 重複的例項化了parent建構函式

2. 子類建立出來的物件的constructor屬性指向了parent類

組合繼承優化

//父類

function

parent()

//子類

function

child

(name)

child.prototype = parent.prototype;

child.prototype.constructor = child;

//將子類原型物件的constructor屬性指向子類建構函式

原生js實現繼承的三種方式

function parent name,age function child name,age,gender const ming newchild ming 18 男 console.log ming 2 原型鏈繼承 優點 實現了原型物件內的函式復用.缺點 雖然得到了屬性值,但無法在例項物件內靈...

三種繼承方式

派生類繼承了基類的全部資料成員和除了建構函式,析構函式之外的全部資料成員,但是這些成員的訪問屬性在派生的過程中是可以調整的。從基類繼承的成員,其訪問屬性由繼承方式控制。類的公有繼承 當繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。類的私有繼承 ...

三種繼承方式

三種繼承方式 公有繼承 私有繼承,保護繼承 不同繼承方式的影響主要體現在 公有繼承 標頭檔案部分 ifndef point h define point h class point void move int offx,int offy int getx const int gety const p...