2011-08-17 69 views
0

我有以下結構:Node.js中的可繼承靜態方法?

第一個文件:

Base = function() { 
}; 

Base.something = function() { 
    return "bla"; 
}; 

if (typeof module !== 'undefined' && "exports" in module) { 
    module.exports = Base; 
} 

第二個文件:

var 
    util = require('util'), 
    Base = require('./base.js'); 

FooBar = function() { 
}; 
util.inherits(FooBar, Base); 

FooBar.something是不確定的。我如何繼承node.js中的靜態方法?

+0

親愛的downvoter,你會如此善意解釋你的投票? –

回答

3

util.inherits在構造函數的原型上運行。

您需要使用簡單的mixin,通常稱爲擴展。它基本上只是將一個(或多個)對象的所有屬性複製到「目標」對象中。 (在這種情況下,你的構造函數)

如果您使用underscore.js,您可以使用_.extend(FooBar, Base);

+0

我沒有下劃線的問題,我已經在使用它了。 –

+0

甜,比只使用'_.extend(FooBar,Base);' –

+0

是的,謝謝。這就是我最終做的。 –

0

我找到了一個又一個解決方案,這是更好,因爲我只用一個庫來實現相同的功能。

這個圖書館是FelixGeisendörfer的oop,他還在nodeguide.com上寫了一個教程,但已經過時了一點。但這裏是同一個問題的工作示例:

var 
    oop = require('oop'), 

    Base = require('./base.js'); 

FooBar = function() { 
    oop.mixin(this, Base); 
}; 
oop.extend(FooBar, Base); 
0

要在基地出口靜態功能,添加:

​​

內Base.js.