JS 繼承模式發展史

2021-10-07 02:50:50 字數 2184 閱讀 7462

1. 傳統形式–>原型鏈

grand.prototype.lastname=

"ji"

;function

grand()

var grand =

newgrand()

; father.prototype = grand;

function

father()

var father =

newfather()

; son.prototype = father;

function

son(

)var son =

newson()

;

缺點:

想繼承的和不想繼承的都繼承來了,過多的繼承了沒用的屬性

2. 借用建構函式

function

person

(name,age,***)

function

student

(name,age,***,grade)

var student =

newstudent()

;

缺點:

不能繼承借用建構函式的原型

每次建構函式都要多走乙個函式(在執行時多增加了乙個函式的呼叫)

3. 共享原型

father.prototype.lastname =

"ls"

;function

father()

function

son(

) son.prototype = father.prototype;

var son =

newson()

;var father =

newfather()

;

father.prototype.lastname =

"ls"

;function

father()

function

son(

)function

inherit

(target,origin)

inherit

(son,father)

;var son =

newson()

;

若要給son的原型新增屬性,father原型的屬性也會更改。

缺點:不能隨便改動自己的原型

4. 聖杯模式

f函式作為乙個中間過渡層,f的原型是father的原型,son的原型是f物件(繼承了father原型的屬性),相當於son的原型擁有father原型的屬性,但son的原型同時也可以擁有自己的屬性而不影響father的原型。

father.prototype.lastname =

"ls"

;function

father()

function

son(

)function

inherit

(target,origin)

f.prototype = origin.prototype;

target.prototype =

newf()

;//原型的構造方法

target.prototype.constuctor = target;

//uber超類 表明真正繼承自誰

target.prototype.uber = origin.prototype;

}inherit

(son,father)

;var son =

newson()

;var father =

newfather()

;

JS繼承發展史

缺點 過多繼承了沒用的屬性。function parent name function child name,hobby var child newchild 缺點 1 不能繼承建構函式的原型 2 每次構造都要多執行乙個函式。從實際考慮並沒有提公升效率。以parent.prototype作為公有原型...

IT薪水發展史

1k 兄弟別做it了,不論你是什麼公司,國營的做it就是配角,那位兄弟願意一輩子做配角,非國營的嗎,看看做什麼別的合適,it不好混,趁早離開 1k 3k 初級階段,一般是剛進公司的,肯定非常缺錢,這時候動力足,也有時間,沒有男 女朋友拖累,象公司內部5k 6k的高手學習。什麼,沒有,什麼爛公司,你也...

記憶體發展史

記憶體 容量 指標 時期出現原因 simm記憶體 30pin 256kb 1982年至今 軟體程式和新一代80286硬體平台的出現 simm記憶體 72pin 512kb 2mb 1988 1990 pc迎來386和486時代,cpu向16bit發展 edo dram 4 16mb 電壓 5v 頻寬...