编程语言
首页 > 编程语言> > javascript-ES6中.on(‘error’,this.onError.bind(this))的替代方法?

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