我正在尝试使用两个对象创建一系列函数调用。
我在代码中添加了注释来描述我正在尝试做的事情:
function Huh(parentContext) {
this.parentContext = parentContext;
this.check = function() {
console.log(parentContext);
}
this.DoWork = function(successFunc) {
console.log('Huh.DoWork');
successFunc('yay');
};}
function Thing() {
this.nextSuccess = function(e) {
console.log('nextSuccess ' + e);
};
this.success = function(e) {
console.log('success!! ' + e);
var h = new Huh(this); // It looks like 'this' doesn't mean the Thing context any more. ?!?!
//h.check();
h.DoWork(this.nextSuccess); // THIS BREAKS.
};
this.fail = function() {
console.log('fail');
};
this.firstBit = function(successFunc, failFunc) {
var h = new Huh(this);
//h.check();
h.DoWork(this.success);
};
// start with this function
this.Go = function() {
this.firstBit(this.success, this.fail);
};}
当我尝试在Thing.success中创建第二个Huh实例时,这一切都破裂了。
我尝试传入this.nextSuccess,但似乎'this'上下文不再相同了。
请帮忙。
答案 0 :(得分:7)
在Thing
功能开始时,添加var that = this;
。然后,您可以使用Thing
访问this
that
。