ExpressJS中的ES6类有不同的performance?
为什么一个类在ExpressJS中有不同的performance? 举个例子:
随着expressJS
LIB / Polygon.js:
class Polygon { log (req, res) { var publicKey = req.params.publicKey; var query = req.query; console.log(this); // undefined var output = { publicKey :publicKey, query: query }; res.send(output); } } export {Polygon as default}
app.js:
import express from 'express'; import Polygon from './lib/Polygon'; var polygon = new Polygon(); app.get('/input/:publicKey', polygon.log);
没有expression
LIB / Polygon.js:
class Polygon { log(req, res) { console.log(this); // Polygon {} } } export { Polygon as default}
app.js:
import Polygon from 'Polygon'; var p = new Polygon(); p.log('world')
我怎样才能得到console.log(this);
undefined在expressjs中返回Polygon {}
?
在第二个代码片段中, log
函数被称为p
对象的成员,这就是为什么this
是指对象。 在第一个代码片段中,情况并非如此,因为您正在将该方法传递给另一个函数,并且该方法与该对象分离 。 你可以使用bind
方法明确地设置this
值:
app.get('/input/:publicKey', polygon.log.bind(polygon));
在第一种情况下,你直接传递函数,因此你不会得到这个多边形对象
使用
app.get('/input/:publicKey', polygon.log.bind(polygon));
在第二种情况下,你正在使用
p.log('world')
这里的日志function将被调用,这将是多边形。
- 在保存mongoose时用ObjectId引用文档
- 使用socket.ioconfigurationExpress 4.0路由
- 需要帮助消化使用express-handlebars node.js返回的JSON blob
- 在Node.js中渲染json时,CSRF令牌不匹配
- 将数据传递给客户端JavaScript(最好不带查看引擎或cookie)
- Mongoose API通过_id获取数组中的嵌套项
- 在尝试从已经初始化的伪javascript类中修改“this”对象时遇到了很多麻烦
- Express中的app.get(name)与app.get(path,,callback)
- 如何正确使用passport.js实现serializeUser?