2013-04-20 189 views
1

OK,讓我們說我有這樣一個構造函數:構造從構造繼承

var Base = function() {}; 
Base.prototype.shmoo = function() { this.foo="shmoo"; } 

如何創建其他構造函數從它獨立擴展Base和相互分開呢?

在延伸的派生構造的功能換句話說僅影響其目的和沒有其他的,既不Base,既不另一個導出的一個。

我已經試過

Extender = function() {}; 
Extender.prototype = Base.prototype; 
Extender.prototype.moo = function() { this.moo="boo"; }; 

但生效隨處可見,當然。

我應該模擬類層次?我試圖遠離那種模式。

+0

精確相同的問題[爲什麼我不能調用Javascript中一個原型的方法是什麼?(http://stackoverflow.com /問題/ 12500637 /爲什麼-着-I-呼叫A-原型法式的JavaScript) – Bergi 2013-04-20 20:14:01

回答

1

這將實現原型繼承(這是你想要的):

// The Extender prototype is an instance of Base but not Base's prototype  
Extender.prototype = new Base(); 

// Set Extender() as the actual constructor of an Extender instance 
Extender.prototype.constructor = Extender; 
+1

10X它的作品,因爲它應該BR – kotio 2013-04-20 19:58:44

+0

[不使用'new'創建原型實例對象!] (http://stackoverflow.com/questions/12592913/what-is-the-reason-to-use-the-new-keyword-here) – Bergi 2013-04-20 20:04:57