我有这段代码:
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
。
答案 0 :(得分:1)
您必须将this
的范围绑定到a
:
b.callApi(a.getName.bind(a));