'这'上下文不会通过回调

时间:2016-05-09 00:28:58

标签: javascript node.js

这是我写的命令行客户端的片段。

'use strict';

const http = require('http');

const host = "http://localhost:8000"

const stdin = process.stdin, stdout = process.stdout;
const prompt = '\n> ';


function Login() {
  this.username = undefined;
  this.admin = false;
  this.loggedIn = false;
  this.options = {};
}

Login.prototype.acceptInput = function(question, callback) {

  stdin.resume();
  stdout.write(question + prompt);

  stdin.once('data', function (data) {
    let input = data.toString().trim();
    callback(input);
  });
};

Login.prototype.request = require('request');


Login.prototype.begin = function() {

  // host returns a prompt back to the client, requesting
  // login info.
  this.request(host, function(error, response, body) {
    if (error) throw error;

    this.acceptInput(body, function (input) {
      //do stuff with user input
    });
  })

};

let login = new Login();
login.begin();

因此,我已经定义了许多方法,注意在Login原型上声明request对象以确保它可以处理实例变量。现在,这是我运行这个程序时会发生什么:

this.acceptInput(body, function (input) {


TypeError: this.acceptInput is not a function

我已经能够验证this.request(etc)是否从主机获得了正确的回复。有了这个,我无法弄清楚为什么this.acceptInput在这里不被接受。它并不像它是一个全局函数或任何东西 - 如果它是,它将无法处理任何实例变量。我完全坚持这一点,任何帮助都表示赞赏。

0 个答案:

没有答案