在看《js設計模式》中,作者提到了js中的兩種繼承方式:類繼承 或 原型繼承,或許是本人才疏學淺,竟發現一些問題。
一、類繼承
思路:作者的思路是使用基於類來繼承,並且做了一個extend函數,在第一時間就吸引了我的眼球,函數如下:
2 var F = function(){};
3 F.prototype = superClass.prototype;
4 subClass.prototype = new F();
5 subClass.prototype.constructor = subClass;
6 }
在js中sunClass和superClass分別是子類和父類的名字(即函數的名字).
在使用的時候作者的思路類似是這樣:
2 {
3 this.attr1 = 1;
4 this.attr2 = 2;
5 this.attr3 = 3;
6 }
7
8 function Author()
9 {
10 Person.apply(this);
11 }
12
13 extend(Author,Person);
但是我在測試中發現一個問題,在上面的extend函數的執行時間爲0。仔細看看,其實這個類繼承僅僅的核心部分爲Author函數中的
Person.apply(this);
extend函數並沒有起到作用?!
二、原型繼承
這種繼承基於一個父類的實例對象,只是把A.prorotype = obj;做了個函數封裝,得到以下的clone函數:
2 {
3 function F() = {};
4 F.prototype = parentObj;
5 return new F();
6 }
轉載於:https://www.cnblogs.com/return/archive/2009/10/30/1593285.html