Унаследованные статические методы в Node.js? - PullRequest
0 голосов
/ 17 августа 2011

У меня следующая структура:

Первый файл:

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 ]

3 голосов
/ 17 августа 2011

util.inherits работает с прототипом функции конструктора.

Вам необходимо использовать простой mixin , обычно называемый extend .Он просто копирует все свойства одного (или нескольких) объектов в объект «назначения».(в данном случае ваша функция конструктора)

Если вы используете underscore.js , вы можете использовать _.extend(FooBar, Base);

0 голосов
/ 24 декабря 2012

Чтобы экспортировать статические функции в Base, добавьте:

module.exports = Base;

внутри Base.js.

0 голосов
/ 18 августа 2011

Я нашел другое решение, которое лучше, потому что я бы использовал только одну библиотеку для достижения той же функциональности.

Эта библиотека - oop Феликса Гейзендёрфера, он такженаписал учебник по nodeguide.com , но он немного устарел.Но вот рабочий пример для той же проблемы:

var
  oop = require('oop'),

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

FooBar = function() {
  oop.mixin(this, Base);
};
oop.extend(FooBar, Base);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...