Node.js中的继承

时间:2016-04-10 19:36:23

标签: javascript node.js inheritance

我在Node中练习并且无法理解如何从对象继承。 我想从我的路由器调用指定的控制器。控制器继承自基本控制器。但是当我尝试调用基本控制器方法时,我总是得到未定义的。如何正确继承和调用父方法?

我是新手,所以可能我没有正确的基础知识。

我的代码:

router.js:

module.exports = function(app) {

  app.get('/', function(req, res) {

    var MainController = require('app/controller/mainController');

    var controller = new MainController(req, res);

    // Here I get undefined;
    console.log(controller.getWidgets);

    controller.index();

  });
}

mainController.js:

var util = require('util');
var BaseController = require('./BaseController');

util.inherits(MainController, BaseController);

function MainController(req,res) {

  this.index = function() {

    // Here I want to use method from parent (BaseController)
    // to get page widgets, also get undefined.
    var widgets = this.getWidgets();

    // console log also says there is no such method
    console.log(this.getWidgets);        

    // then render page
    res.render(...)
  }

}

module.exports = MainController;

BaseController.js:

function BaseController() {

  // example code
  this.getWidgets = function() {
    console.log('widgets are sent');
    return 123;
  }

}

module.exports = BaseController;

1 个答案:

答案 0 :(得分:3)

getWidgets应该被定义为原型方法。

{{1}}