2011-08-17 150 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.