使用“this”获取Restify Handler对象

时间:2016-09-11 23:40:51

标签: node.js restify

我使用以下代码设置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 )

2 个答案:

答案 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);