javascript-ES6中.on(‘error’,this.onError.bind(this))的替代方法?
作者:互联网
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方法的主体内部使用此方法:
// Safe unbound method
Person.prototype.onError = function (error) {
console.log(error);
};
// Unsafe unbound method
Person.prototype.onError = function (error) {
console.log(this, error);
// ^^^^
};
标签:ecmascript-6,node-js,binding,javascript 来源: https://codeday.me/bug/20191119/2037954.html