私はNodeで練習しています。オブジェクトから継承する方法をundestandできません。 ルータから指定されたコントローラに電話したいと思います。コントローラはベースコントローラから継承されます。しかし、ベースコントローラーメソッドを呼び出そうとすると、私は常に定義されません。どのように継承し、親メソッドを正しく呼び出すか?Node.jsでの継承
私は初心者ですので、基本的なことが正しいとは限りません。
マイコード:
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;
getWidgetsは、継承されたものではなく、独自のメソッドです。 – dandavis
あなたの親コンストラクタへのスーパーコールを忘れました: 'MainController'の最初の行に' BaseController.call(this) 'を入れてください。 – Bergi