无法读取 属性 的回调未定义问题
Cannot read property of undefined issue on callback
我有一个非常简单的 class,它包装了一个 node.js 串口 class。在创建对象时,会创建一个新的记录器。单步执行时,一切似乎都很好——当我调用打开时,我可以看到记录器是一个有效的记录器对象。但是,当错误方法由打开端口时的错误触发时,记录器不再定义 - 回调和创建的对象似乎存在一些问题,但我不知道是什么?感谢您的帮助!
编辑:我用 TypeScript 编写了 class,我意识到这可能是一个非常烦人的问题,classic JavaScript "this" 问题...抱歉 - 我对 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;
使用箭头函数或绑定它,任何一种方法都应该有效
this.port.on('error', (err) => {this.error(err)});
或
var error=this.error.bind(this);
this.port.on('error', error);
我有一个非常简单的 class,它包装了一个 node.js 串口 class。在创建对象时,会创建一个新的记录器。单步执行时,一切似乎都很好——当我调用打开时,我可以看到记录器是一个有效的记录器对象。但是,当错误方法由打开端口时的错误触发时,记录器不再定义 - 回调和创建的对象似乎存在一些问题,但我不知道是什么?感谢您的帮助!
编辑:我用 TypeScript 编写了 class,我意识到这可能是一个非常烦人的问题,classic JavaScript "this" 问题...抱歉 - 我对 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;
使用箭头函数或绑定它,任何一种方法都应该有效
this.port.on('error', (err) => {this.error(err)});
或
var error=this.error.bind(this);
this.port.on('error', error);