原生js的8種類繼承方式

2021-09-24 15:31:37 字數 2051 閱讀 9506

1.原型鏈繼承

grand.prototype.lastname = "yang";

function

grand

()var grand = new grand();

father.prototype = grand;

function

father

()var father = new father();

son.prototype = father;

function

son()

缺點:

(1)過多地繼承了沒用的屬性

(2)不支援多繼承,子類只能繼承自乙個父類

(3)建立子類例項時,無法向父類建構函式傳參

function

person

(name,age,***)

function

student

(name,age,***,grade)缺點:

(1)不能借用建構函式的原型

(2)每次建構函式都要多走乙個函式,增加了函式呼叫。

3.公有原型

father.prototype.lastname = "yang";

function

father

()function

son()

son.prototype = father.prototype;

var father = new father();

var son = new son();

缺點:

不能隨便改動自己的原型,乙個改了,另乙個也會跟著改。

4.聖杯模式

var inherit = (function();

return

function

(target,origin)());

缺點:perfect

5.例項繼承

function

father

(){};

function

son(name)

var son = new son();

缺點:

(1)返回的例項是父類的,而不是子類本身的。

(2)不支援多繼承。

6.拷貝繼承

function

father

(){};

function

son(name)

this.name = name;

}var son = new son();

缺點:

(1)效率低,佔記憶體

(2)無法獲取父類不可列舉的方法

7.組合繼承

function

father

(name){};

function

son()

son.prototype = new father();

son.prototype.constructor = son;

var son = new son();

缺點:

呼叫了兩次父類建構函式。

8.寄生組合繼承:

組合繼承 + 聖杯模式

(本文**)[

1.原型鏈繼承

grand.prototype.lastname = "yang";

function

grand

()var grand = new grand();

father.prototype = grand;

function

father

()var father = new father();

son.prototype = father;

function

son()

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

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

js繼承的7種方式

突然發現自己好久沒有更新部落格,今天剛好研究js的繼承,感覺挺有意思的,特拿來給大家分享一下。列印結果 這種方式的缺點是 1.使用call方法列印結果 缺點 1.不能繼承借用建構函式的原型上的屬性和方法 2.每次建構函式都要多執行乙個函式,降低開發效率。2 只能繼承父類私有的屬性或者方法 因為這樣是...

js繼承的6種方式

想要繼承,就必須要提供個父類,繼承誰,提供繼承的屬性 function person name person.prototype.age 10 給建構函式新增了原型屬性function per per.prototype newperson var per1 newper console.log p...