我有以下结构:
第一档:
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 :(得分:3)
util.inherits对构造函数的原型进行操作。
您需要使用简单的 mixin ,通常称为扩展。它基本上只是将一个(或多个)对象的所有属性复制到“目标”对象中。 (在这种情况下,你的构造函数)
如果您使用的是underscore.js,则可以使用_.extend(FooBar, Base);
答案 1 :(得分:0)
我找到了另一个更好的解决方案,因为我只使用一个库来实现相同的功能。
这个图书馆是FelixGeisendörfer的oop,他还在nodeguide.com写了一个教程,但它已经过时了。但这是一个同样问题的工作示例:
var
oop = require('oop'),
Base = require('./base.js');
FooBar = function() {
oop.mixin(this, Base);
};
oop.extend(FooBar, Base);
答案 2 :(得分:0)
要在Base中导出静态函数,请添加:
module.exports = Base;
在Base.js。
中