我想清理我的项目一点,现在我尝试使用es6类为我的路线.我的问题是,这总是未定义的.
var express = require('express'); var app = express(); class Routes { constructor(){ this.foo = 10 } Root(req,res,next){ res.json({foo: this.foo}); // TypeError: Cannot read property 'foo' of undefined } } var routes = new Routes(); app.get('/',routes.Root); app.listen(8080);
解决方法
尝试使用代码来固定这个:
app.get('/',routes.Root.bind(routes));
var _ = require('underscore'); // .. var routes = new Routes(); _.bindAll(routes) app.get('/',routes.Root);
我还发现,es7允许您以更优雅的方式编写代码:
class Routes { constructor(){ this.foo = 10 } Root = (req,next) => { res.json({foo: this.foo}); } } var routes = new Routes(); app.get('/',routes.Root);