Node.js наследование прототипа с помощью require - PullRequest
2 голосов
/ 17 сентября 2011

У меня проблема с наследованием двух функций в node.js, когда я использую функции require.

Вот мой случай:

function administrators () {
    this.user = 'bob';
}
administrators.prototype.print_user = function () {
    console.log(this.user);
}

/*******/


function helper() {}

helper.prototype = new administrators();

helper.prototype.change_administrator = function() {
    this.user = 'john';

}

var h = new helper();

h.print_user();
h.change_administrator();
h.print_user();

Как вы можете видеть здесь, у меня есть двафункции:

  • administrations просто имеет пользовательскую переменную и print_user функцию.
  • helpers наследует все от administrators, а затем мы добавляем change_administrator, что меняет this.use объявлено в administrators().

Вот вопрос:

Я хочу иметь эти функции (administrators и helper) в отдельных файлах, например: administrators.js и helper.js.

Затем я хочу включить эти два файла в index.js с require и наследовать administrators переменные и функции для помощника, как я делал в примере выше.

PS Я искал похожие вопросы, но ничего такого в наследстве нет.

Ответы [ 2 ]

6 голосов
/ 17 сентября 2011

Требуется, чтобы администраторы находились в файле helpers.js.

administrator .js

function administrators () {
    this.user = 'bob';
}
administrators.prototype.print_user = function () {
    console.log(this.user);
}

module.exports = administrators;

helpers.js

var administrators = require('./administrators');

function helper() {}

helper.prototype = new administrators();

helper.prototype.change_administrator = function() {
    this.user = 'john';
};

module.exports = helper;

index.js

var helper = require('./helpers');

var h = new helper();

h.print_user();
h.change_administrator();
h.print_user();
0 голосов
/ 17 сентября 2011

Вы должны будете вручную расширить их в классе, который выполнил требование.

Расширение здесь означает "копировать методы и свойства из одного объекта в другой"

поочередно помощники требуют администратора напрямую

...