我使用以下代码设置Restify路线。我创建一个伪类,实例化该对象并将其用作处理程序。我希望对象本身在“ping”函数中绑定到“this”,这样我就可以访问成员变量了。然而,“this”最终指向包含路线等的某些restify对象。这是否与Restify无法合作?
var Handler1 = function() {
if (!(this instanceof Handler1 )) {
return new Handler1 ();
}
...
}
HttpHandlers.prototype.ping= function(req, res, next) {
//this doesn't point to the handler1 object.
return next();
}
...
var myhandler1 = new Handler();
app.get("/ping", myhandler1.ping , handler2);
handler1.ping.bind(myhandler1 )
答案 0 :(得分:0)
我会尝试将对象实例作为路径而不是对象。这对我来说更有意义。
class Pong1 {
constructor(name) {
this.name = name;
}
ping = res => res.write(`PONG ${this.name}`);
}
const pong1 = new Pong1('Pongy);
app.get('/ping', pong1.ping);
这更像是ES2017版本,我觉得更合适。如果你真的想要,你应该能够转换为更多的ES5语法。
答案 1 :(得分:0)
事实证明我需要传入绑定函数:
app.get("/ping", myhandler1.ping.bind(myhandler1), handler2);