Javascript ES6中.on(';error';,this.onError.bind(this))的替代方案?

Javascript ES6中.on(';error';,this.onError.bind(this))的替代方案?,javascript,node.js,binding,ecmascript-6,Javascript,Node.js,Binding,Ecmascript 6,bind。此在init()中是必需的。我这里有什么ECMAScript 6替代方案来处理这个问题?这是唯一的解决方案吗?似乎我不能在这里应用箭头。您可以使用: 为了直接回答您的问题,ES6没有提供任何附加功能,我们可以使用这些功能在调用时避免绑定onError。ES6还没有消除JavaScript执行上下文的行为 另外,声明实例方法的方式是非法的,并且会引发错误。它们应声明如下: request('http://google.fr').on('error', (error) => this

bind。此
init()中是必需的。我这里有什么ECMAScript 6替代方案来处理这个问题?这是唯一的解决方案吗?似乎我不能在这里应用箭头。

您可以使用:


为了直接回答您的问题,ES6没有提供任何附加功能,我们可以使用这些功能在调用时避免绑定
onError
。ES6还没有消除JavaScript执行上下文的行为

另外,声明实例方法的方式是非法的,并且会引发错误。它们应声明如下:

request('http://google.fr').on('error', (error) => this.onError(error));
当前,如果未绑定传递,则您的
onError
方法不会出现任何错误。这是因为在
onError
方法的主体中没有使用
This

Person.prototype.init = function () {   
    request('http://google.fr').on('error', this.onError.bind(this));
};

Person.prototype.onError = function (error) {
    console.log(error);
};

不确定这是否是一种改进。能否修复语法错误?不能在函数标识符中使用点。为什么要绑定此方法?对我来说,它看起来相当静态。@Bergi的可能副本剥离了我的示例,我的实际代码访问Person的状态。
Person.prototype.init = function () {   
    request('http://google.fr').on('error', this.onError.bind(this));
};

Person.prototype.onError = function (error) {
    console.log(error);
};
// Safe unbound method
Person.prototype.onError = function (error) {
    console.log(error);
};

// Unsafe unbound method
Person.prototype.onError = function (error) {
    console.log(this, error);
             // ^^^^
};