物件導向繼承的幾種方式

2022-04-06 07:54:32 字數 2795 閱讀 2698

類式繼承

一般類式繼承是繼承私有屬性,呼叫父類通過call改變子類this指向

function

person1(name,age)

function

coder1(name,age,job)

let p1 = new person1('阿凡達',2009);

let c1 = new coder1('卡梅隆',56,'導演')

拷貝繼承

把乙個物件的屬性和方法直接複製到另乙個物件中

使用for in 遍歷父類身上的方法,只要是自身的就賦值給子類的原型

子類通過for in繼承父類的方法(把父類的東西都繼承過來),子類新加的方法父類不會有

function

person2(name,age)

person2.prototype.say = function

() person2.prototype.run = function

()

function

coder2(name,age,job)

//person2.prototype == coder2.prototpe;//此時已經賦值了

for(let attr in

person2.prototype)}//

這樣繼承下來不是繼承他的位址,改變一些方法也不影響person

coder2.prototype.runing = function

() let p2 = new person2('tom',20);

let c2 = new coder2('jack',22,'reporter');

c2.runing();

console.log(coder2.prototype);

使用object.assign()拷貝

function

person(name,age)

person.prototype.say = function

() person.prototype.run = function

()

function

coder(name,age,job)

//coder.prototype = object.assign({},person.prototype);//淺拷貝

object.assign(coder.prototype,person.prototype);

coder.prototype.say = function

() let c = new coder('paul',26,'主席');

let p = new person('rondo',26)

c.run();

p.say();

原型繼承

原型繼承主要是繼承父類身上的屬性和方法

1)建立乙個空的建構函式

2)把空建構函式的原型等於父級的原型

3)把子類的原型等於new空函式

這樣就達到了繼承屬性的目的

function

pn(name)

pn.prototype.say = function

() pn.prototype.run = function

()

function

cn(name)

function

temp(){}

temp.prototype =pn.prototype;

cn.prototype = new temp;

寄生組合式繼承

子類私有繼承父類私有,子類公有繼承父類公有

屬性繼承:通過call繼承的方法,將父類中的私有屬性賦值乙份到子類的私有屬性中

方法繼承:通過object.create將父類的原型當作引數傳入,返回值是乙個空物件

將其賦值給子類的原型,這樣子類的原型就通過_proto_原型鏈找到父類的原型

function

pn(name)

pn.prototype.say = function

()

function

cn(name)

cn.prototype = object.create(pn.prototype);

es6繼承

es6給我們提供了語法糖,可以用class建立類

通過extends繼承父類屬性,如果有新增constructor函式的話就必須使用super,否則會報錯

super屬於call繼承,可以通過super給父類傳參,super上面有死區,上方輸入this也會報錯

class person

//靜態方法

static say()

//動態方法

say()

} class coder extends person

coding()

} let p = new person('tom',22);

let c = new coder('jack',18,'student');

person.say();

//呼叫person靜態方法

p.say();//

呼叫person動態方法

c.say();//

繼承了父類的方法

c.coding();//

student 呼叫coder動態方法

物件導向繼承的幾種方式

類式繼承 一般類式繼承是繼承私有屬性,呼叫父類通過call改變子類this指向 function person1 name,age function coder1 name,age,job let p1 new person1 ccc 2021 let c1 new coder1 老八 56,美食家...

Js物件導向的幾種方式

1.物件的字面量 var obj 2.建立例項物件 var obj new object 3.建構函式模式 function fn new fn 4.工廠模式 用乙個函式,通過傳遞引數返回物件 function fn params fn params 5.原型模式 function clock ho...

JavaScript中幾種物件繼承的方式對比

function parent parent.prototype.say function function child console.log newchiid say error!缺點 借助原型鏈實現繼承 function parent function child child.prototyp...