javascript - Javascript ES6 类中的递归

标签 javascript node.js ecmascript-6

<分区>

我试图在 Javascript ES6 类的方法中调用相同的方法,但它不起作用。

class Client {
    constructor(connection) {
        this.channels = [];
        this.nickname = null;
        this.user = null;
        this.realName = null;
        connection.on('data', this.parse_message);
    }
    parse_message(message) {
        let messageObject = {};
        if (message.includes('\r\n')) {
            message = message.split('\r\n');
            message.forEach((el) => {
                this.parse_message(el); 
            });
        }
        else {
            message = message.split(' ');
            console.log('Message Received: ', JSON.stringify(message));
        }
    }
} 

运行时出现此错误 TypeError: this.parse_message is not a function。我尝试将 this 分配给顶部的变量 self 但仍然没有用。

最佳答案

将箭头函数作为绑定(bind)处理程序传递,以便您可以保持 this 与该方法关联。

    connection.on('data', (...args) => this.parse_message(...args));

现在 forEach 回调中的 this 将是预期值。

关于javascript - Javascript ES6 类中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224554/

相关文章:

javascript - 从外部文件加载 json

javascript - 如何停止 Angular 重复的 api 调用

javascript - tsconfig.json 显然被忽略了?

javascript - 使用 () 强制 JavaScript 解释器首先进行计算

javascript - 了解 React 服务器端渲染中使用 .dispatch 和箭头函数链接的 .map 和 .filter

node.js - 需要建议将 React 应用程序转换为使用服务器端渲染

javascript - 具有依赖关系的 UMD 的终极 JS 模块解决方案?

node.js - Passport.js 阳性结果

javascript - 箭头函数返回的对象中出现“意外标记”语法错误

javascript - 如何访问异步等待返回对象中的属性