1. 原型鏈繼承
2,建構函式繼承(物件冒充繼承)
3,組合繼承(原型鏈繼承+建構函式繼承)
4,原型式繼承
5. 寄生組合式繼承
一。原型鏈繼承
function show()
function run()
run.prototype=new show();
var run=new run();
alert(run.name)//結果:run
二。建構函式繼承(物件冒充繼承)
為了解決引用共享和超型別無法傳參的問題,我們採用一種叫借用建構函式的技術,或
者成為物件冒充(偽造物件、經典繼承)的技術來解決這兩種問題
function box(age)
function desk(age)
var desk = new desk(200);
alert(desk.age);//200
alert(desk.name);//['lee','jack','hello']
desk.name.push('aaa'); //新增的新資料,只給 desk
alert(desk.name)//['lee','jack','hello','aaa']
三。組合繼承(原型鏈繼承+建構函式繼承)
借用建構函式雖然解決了剛才兩種問題, 但沒有原型, 復用則無從談起。 所以, 我們需
要原型鏈+借用建構函式的模式,這種模式成為組合繼承。
function box(age)
box.prototype.run = function () ;
function desk(age)
desk.prototype = new box(); //原型鏈繼承
var desk = new desk(100);
alert(desk.run());
四。原型式繼承
這種繼承借助原型並基於已有的物件建立新物件,
同時還不必因此建立自定義型別
function obj(o) //建立乙個建構函式
f.prototype = o; //把字面量函式賦值給建構函式的原型
return new f(); //最終返回出例項化的建構函式
}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); //引用型別共享了
五。寄生組合式繼承
寄生組合式繼承解決了兩次呼叫的問題,組合式繼承就會有兩次呼叫的情況
基本模型如下:
function object(o)
f.prototype = o;
return new f();
}function inheritprototype(subtype, supertype)
後面的寄生式繼承和寄生組合模型式繼承還搞不懂,哈哈哈,好尷尬 js原型繼承的幾種方式
借鑑 1 原型鏈繼承 2 建構函式繼承 物件冒充繼承 3 組合繼承 原型鏈繼承 建構函式繼承 4 原型式繼承 5 寄生組合式繼承 一。原型鏈繼承 an highlighted block unction show function run run.prototype newshow var show...
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...