无法在回调中读取未定义问题的属性

时间:2016-10-18 14:53:00

标签: javascript node.js undefined

我有一个非常简单的类,它包装了一个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;

1 个答案:

答案 0 :(得分:2)

使用箭头功能或绑定它,无论哪种方式都可以使用

this.port.on('error', (err) => {this.error(err)});

var error=this.error.bind(this);
this.port.on('error', error);