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);
// ^^^^
};