ES6中的.on('error', this. onerror .bind(this))的替代方案
Alternative to .on('error', this.onError.bind(this)) in ES6?
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.this
在所需的init()
中。我在这里有什么ECMAScript 6替代品来处理这个问题?这是唯一的解决方案吗,我似乎不能在这里使用箭头
直接回答你的问题,ES6没有提供任何额外的功能,我们可以使用它来避免在调用点绑定onError
。ES6并没有取消JavaScript执行上下文的行为。
作为旁注,声明实例方法的方式是非法的,并且会抛出错误。它们应该按如下方式声明:
Person.prototype.init = function () {
request('http://google.fr').on('error', this.onError.bind(this));
};
Person.prototype.onError = function (error) {
console.log(error);
};
当前您的onError
方法将不会遭受任何错误,如果传递未绑定。这是因为您没有在onError
方法的主体内使用this
:
// Safe unbound method
Person.prototype.onError = function (error) {
console.log(error);
};
// Unsafe unbound method
Person.prototype.onError = function (error) {
console.log(this, error);
// ^^^^
};
您可以使用胖箭头函数:
request('http://google.fr').on('error', (error) => this.onError(error));
相关文章:
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- JavaScript 中的嵌套函数和 “this” 关键字
- 为什么$.brower被弃用?还有什么更好的替代方案
- React+Meteor:this.ops返回未定义
- javascript中对象构造函数中的var属性与this.properties
- 执行php函数的onclick事件的其他替代方案
- 函数中this和var之间的区别
- Android上URL方案的替代方案
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- :not选择器不适用于ul类-备选方案
- Codecademy Javascript 'this'和解决方案
- 在方法中的 ajax 调用中使用“this”关键字的解决方案
- ES6中的.on('error', this. onerror .bind(this))的替代方案