設計模式 各種繼承方式

2022-07-22 19:45:17 字數 1619 閱讀 8279

一、原型繼承

b.prototype=new a; 子類的原型等於父類的乙個例項

把父類a中私有的屬性和公有的屬性都繼承過來,變為子類b中公有的屬性

function a() 

a.prototype =

};function b()

b.prototype = new a;

b.prototype.constructor = b;

二、call繼承在子類b的函式體中,把父類a當做普通函式執行,並且讓父類a中的this變為子類b的乙個例項,這樣就相當於把父類a中的所有的私有的屬性都增加給子類b的例項了

只能把a中私有的繼承過來,當做b中私有的,公有屬性的無法進行處理

function a() 

a.prototype =

};function b()

var b = new b;

三、冒充物件繼承在子類b的函式體中,先獲取父類a的乙個例項,然後遍歷這個例項中的所有屬性,把所有的屬性依次賦值給子類b的例項的私有的屬性

把a中公有的和私有的都變為了b中私有的

function a() 

a.prototype =

};function b()

}// this.temp = new a;

// for (var key in this.temp)

// }

// delete this.temp;

}var b = new b;

console.dir(b);

四、混合模式:原型模式+call模式

a中私有的在b中私有的和公有的都存在了,a中公有的在b中公有的

雖然a中私有的重複了,但是沒有太大的影響,如果非要私有的就是私有的,公有的就是公有的,我們只需要自己在編寫乙個程式把私有的刪掉即可

function a() 

a.prototype =

};function b()

b.prototype = new a;

b.prototype.constructor = b;

//將b公有中繼承了a私有的刪除掉,以下可以不寫,除非你有強迫症

b.prototype.delprivate = (function ()

}return null;

}).call(b.prototype);

var b = new b;

console.dir(b);

五、中間類繼承:在ie下不相容、我們一般用它只處理內建類

js各種繼承方式彙總

首先定義乙個父類 function animal name animal.prototype.eat function food 特點 1 子類的原型指向父類的例項 缺點 1 無法多繼承 2 無法向父類的構造傳參 3 來自原型物件的引用屬性是所有例項共享的 function cat cat.prot...

各種設計模式分析

簡單工廠模式 通過工廠類對業務邏輯選擇封裝化,把業務邏輯封裝到工廠方法中.優點是使業務邏輯和業務實現真正 分離.缺點是擴充套件起來非常不方便.需要修改原來的工廠實現 試用於業務比較多,但是變化比較小的情況 抽象工廠模式 通過抽象工廠,對比起來,他可以輕易載入返回的業務類。且可以對返回類抽象化.實現業...

C 各種繼承方式的可見性

公有繼承 public 私有繼承 private 保護繼承 protected 是常用的三種繼承方式。1.公有繼承 public 公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private...