首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替代.on(‘错误’,this.onError.bind(这里))在ES6?

替代.on(‘错误’,this.onError.bind(这里))在ES6?
EN

Stack Overflow用户
提问于 2015-09-26 13:11:14
回答 2查看 1.5K关注 0票数 3
代码语言:javascript
复制
function Person()
}

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

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-26 13:48:42

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

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

代码语言:javascript
复制
Person.prototype.init = function () {   
    request('http://google.fr').on('error', this.onError.bind(this));
};

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

当前,如果未绑定传递,onError方法将不会出现任何错误。这是因为在this方法的主体中不使用onError

代码语言:javascript
复制
// Safe unbound method
Person.prototype.onError = function (error) {
    console.log(error);
};

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

Stack Overflow用户

发布于 2015-09-26 13:14:02

您可以使用脂肪箭头函数

代码语言:javascript
复制
request('http://google.fr').on('error', (error) => this.onError(error));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32797573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档