我有一个非常简单的类,它包装了一个node.js串口类。在对象创建时,会创建一个新的记录器。单步执行时,一切似乎都很好 - 当我调用open时,我可以看到记录器是一个有效的记录器对象。但是,当打开端口时出现错误触发错误方法时,不再定义记录器 - 似乎回调和创建的对象存在一些问题,但我不知道是什么?谢谢你的帮助!
编辑:我在TypeScript中编写了这个类,我意识到这可能是一个超级烦人的经典JavaScript"这个"问题...我道歉 - 我对js很新。"use strict";
var SerialPort = require('serialport');
const logger = require('../logger');
class MySerialPort {
constructor() {
this.log = new logger();
}
error(error) {
console.log(error);
try {
this.log.log('Serial port error: ' + error);
}
catch (e) {
console.log(e);
}
}
open(commport) {
this.port = new SerialPort(commport);
this.port.on('data', this.dataRecieved);
this.port.on('error', this.error);
return true;
}
dataRecieved(data) {
console.log(data.toString());
}
}
module.exports = MySerialPort;
答案 0 :(得分:2)
使用箭头功能或绑定它,无论哪种方式都可以使用
this.port.on('error', (err) => {this.error(err)});
或
var error=this.error.bind(this);
this.port.on('error', error);