Node.js中可继承的静态方法?

时间:2011-08-17 15:11:45

标签: javascript oop inheritance 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中继承静态方法?

3 个答案:

答案 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。