gpt4 book ai didi

javascript - 在 ES6 中替代 .on ('error' , this.onError.bind(this)) ?

转载 作者:搜寻专家 更新时间:2023-10-31 23:47:33 25 4
gpt4 key购买 nike

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() 中是必需的。我有什么 ECMAScript 6 替代方案来处理这个问题?这是唯一的解决方案吗,我似乎无法在此处应用箭头。

最佳答案

为了直接回答您的问题,ES6 没有提供任何我们可以用来避免在调用点绑定(bind) 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);
};

目前,如果未绑定(bind)传递,您的 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);
// ^^^^
};

关于javascript - 在 ES6 中替代 .on ('error' , this.onError.bind(this)) ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32797573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com