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将被调用,这将是多边形。