嵌套函数参数和Javascript中的“this”上下文

时间:2010-06-29 09:40:57

标签: javascript

我正在尝试使用两个对象创建一系列函数调用。

我在代码中添加了注释来描述我正在尝试做的事情:

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'上下文不再相同了。

请帮忙。

1 个答案:

答案 0 :(得分:7)

Thing功能开始时,添加var that = this;。然后,您可以使用Thing访问this that