js原型繼承的幾種方式

2021-09-11 05:30:51 字數 2215 閱讀 8480

借鑑

1 原型鏈繼承

2 建構函式繼承(物件冒充繼承)

3 組合繼承(原型鏈繼承+建構函式繼承)

4 原型式繼承

5 寄生組合式繼承

一。原型鏈繼承

// an highlighted block

unction show()

function

run(

)run.prototype=

newshow()

;var show=

newrun()

;alert

(show.name)

//結果:run

二。建構函式繼承(物件冒充繼承)

為了解決引用共享和超型別無法傳參的問題,我們採用一種叫借用建構函式的技術,或

者成為物件冒充(偽造物件、經典繼承)的技術來解決這兩種問題

// an highlighted block

function

box(age)

function

desk

(age)

var desk =

newdesk

(200);

alert

(desk.age)

;//200

alert

(desk.name)

;//['lee','jack','hello']

desk.name.

push

('aaa');

//新增的新資料,只給 desk

alert

(desk.name)

//['lee','jack','hello','aaa']

三。組合繼承(原型鏈繼承+建構函式繼承)

借用建構函式雖然解決了剛才兩種問題, 但沒有原型, 復用則無從談起。 所以, 我們需

要原型鏈+借用建構函式的模式,這種模式成為組合繼承。

// an highlighted block

function

box(age)

box.prototype.

run=

function()

;function

desk

(age)

desk.prototype =

newbox()

;//原型鏈繼承

var desk =

newdesk

(100);

alert

(desk.

run())

;

四。原型式繼承

這種繼承借助原型並基於已有的物件建立新物件,

同時還不必因此建立自定義型別

// an highlighted block

function

obj(o)

//建立乙個建構函式

f.prototype = o;

//把字面量函式賦值給建構函式的原型

return

newf()

;//最終返回出例項化的建構函式

}var box =

;var box1 =

obj(box)

;//傳遞

alert

(box1.name)

;box1.name =

'jack'

;alert

(box1.name)

;alert

(box1.arr)

;box1.arr.

push

('父母');

alert

(box1.arr)

;var box2 =

obj(box)

;//傳遞

alert

(box2.name)

;alert

(box2.arr)

;//引用型別共享了

五。寄生組合式繼承

// an highlighted block

function

object

(o)f

.prototype = o;

return

newf()

;}function

inheritprototype

(subtype, supertype)

js原型繼承的幾種方式

1.原型鏈繼承 2,建構函式繼承 物件冒充繼承 3,組合繼承 原型鏈繼承 建構函式繼承 4,原型式繼承 5.寄生組合式繼承 一。原型鏈繼承 function show function run run.prototype new show var run new run alert run.name...

js繼承幾種方式

js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 核心 將父...

幾種js的繼承方式

1 繼承第一種方式 物件冒充 function super username function sub username var supernew new super super var subnew new sub sub supernew.hello subnew.hello subnew.wo...