gpt4 book ai didi

javascript - 将回调函数与原型(prototype)函数一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 04:40:26 24 4
gpt4 key购买 nike

在执行回调时,我无法弄清楚如何传递对象方法而不是排序“通用原型(prototype)”方法。

function Client() {
this.name = "hello";
}

Client.prototype.apiCall = function(method, params, callback) {
callback();
}


Client.prototype.onLogin = function(error, data) {
console.log(this.name);// undefined!!!!
}

Client.prototype.start = function() {
var self = this;
self.apiCall('rtm.start', {
}, self.onLogin) // passing of method like this does not work.
}

我正在传递 onLogin 方法,但它不起作用。这是我重写的代码。以前我将所有方法都嵌套在 Client 函数中,但好吧,我了解到这不是实现它的方法,所以现在我尝试使用原型(prototype)。

我知道有一些解决方案“绑定(bind)”了 Client() 函数中的 onLogin 函数,但我想了解这个问题。

最佳答案

您需要使用 bindapiCall 的上下文绑定(bind)到回调:

Client.prototype.apiCall = function(method, params, callback) {
var bound = callback.bind(this);
bound();
}

否则,onLogin 中的 this 将设置为全局对象。

参见 Call, Apply And Bind了解更多详情。

Basically .bind(obj) returns a function which, when called, will internally use (obj) as this.
So you create this bound and then you call it.

关于javascript - 将回调函数与原型(prototype)函数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578557/

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