Проблема с прототипом объекта NodeJS Module.Exports - PullRequest
2 голосов
/ 23 июня 2011

Я только немного попадаю в NodeJS и попадаюсь в ловушку, пытаясь создать (ОЧЕНЬ) базовую реализацию MVC для него.

Это сводится к следующему. У меня есть основной объект для контроллера, для которого я пытаюсь создать прототип; Код следующий:

var Controller = function(obj) {

    this.request = null;
    this.response = null;
    this.params = null;
    this.layout = 'default';    

}

Controller.prototype = new function() {

    this.processAction = function(action) {
        console.log("Processing Action.");
    }

}

module.exports = new Controller();

Я удалил большинство значений / функций для этой проблемы, поскольку они на самом деле не связаны. В основном, насколько я понимаю, использование module.exports позволяет экспортировать объект в переменную с помощью функции require (). В моем диспетчере есть следующее:

var Controller = require('./Controller.js');

Проблема в том, что всякий раз, когда я распечатываю переменную Controller, я получаю первую часть объекта, но прототип не включается. Смотрите следующую распечатку:

{ request: null,
  response: null,
  params: null,
  layout: 'default' }

Таким образом, вызов функции-прототипа Controller.processAction () приводит к ошибке отсутствия метода. Я объявляю этот прототип неправильным или мне не хватает чего-то, связанного с NodeJS?

1013 * * [EDIT]

Я также попробовал следующий стиль для добавления прототипа безрезультатно.

Controller.prototype = {
    'processAction' : function(action) {
        console.log("Processing Action");
    }
}

[РЕДАКТИРОВАТЬ 2]

Неважно, сработавший выше console.log не сообщает о дополнительной функциональности в прототипе, интересно.

Ответы [ 2 ]

4 голосов
/ 23 июня 2011
Controller.prototype = {
    processAction : function(){
        // code
    },

    anotherMethod : function(){
    }
}
1 голос
/ 23 июня 2011

использование:

Controller.prototype = {
    processAction : function(action) {
        console.log("Processing Action.");
    }
}
...