javascript - 使用其上下文调用原始回调函数

标签 javascript callback this

我有这个代码:

function A() {
  this.name = 'John';  
}
A.prototype.getName = function() {
  return this.name;
}

function B() {

}
B.prototype.callApi = function(cb) {
  var context = arguments[0];
  setTimeout(function() {
    console.log('server data combine with ' + cb());
  }, 1000);
}

var a = new A();
console.log(a.getName());

var b = new B();
b.callApi(a.getName);

我希望当执行 getName 时,this变量指向a对象。

问题是当 cb执行后,this不属于a instance .

最佳答案

您必须将 this 的范围绑定(bind)到 a:

b.callApi(a.getName.bind(a));

关于javascript - 使用其上下文调用原始回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50204773/

相关文章:

java - 在 Java 类中重新分配 `this`

javascript - JQuery index() - 哪条路?

javascript - Spring Boot 缩小 javascript

javascript - 如何使用javascript使图像上下移动

javascript - NodeJS MongoDB 游标 toArray 回调函数不会对父范围变量进行更改

javascript - 使用参数变量获取传递给 ES6 箭头函数的参数

javascript - node.js 中的 require() 是如何工作的?

javascript - 色标的 D3 图例

javascript - 使用尾声,是否可以在没有关联的情况下取回资源?

c++ - 回调(std::function/std::bind)与接口(interface)(抽象类)的优缺点