我正在玩JavaScript,特別是用類和whatnot模擬面向對象編程。複製原型繼承?
我知道實現繼承
MyClass.prototype = new AnotherClass();
的這種方式,但我並不滿足,我不喜歡我怎麼需要調用AnotherClass
構造。所以我在玩耍,我想出了一些似乎可行的事情,基本上想要第二個意見。
function clone (obj)
{
function CloneFactory() {}
CloneFactory.prototype = obj;
return new CloneFactory();
}
MyClass.prototype = clone(AnotherClass.prototype);
通過克隆原型,我們得到的是一個新的副本,並分配到MyClass
的原型,以便改變繼承屬性不會影響父母的原型的屬性。像這樣MyClass.prototype = AnotherClass.prototype
。
我跑了壓力測試,這在某些情況下更有效率,也就是說,當父項的構造函數中有很多代碼時,它會大致相同。另一個好處(或者至少我發現它是有益的)是它在一定程度上允許從子類中隱藏信息。任何特權方法和成員都不會被繼承。
我忽略了一些重大缺陷嗎?
我不是JavaScript的專家,實際上我對JavaScript很陌生,所以我想對此有第二個意見,因爲我似乎無法通過Google找到任何內容。我不想執行錯誤的代碼:)!
謝謝!直到現在,我甚至都不知道「Object.create」。 – SpaceFace 2012-07-15 01:10:16