2013-12-11 156 views
0

在下面的代碼中,我想將參數「winter」的print_season函數的引用傳遞給函數inner_function。從另一個對象調用函數

tony = { 
    print_season: function (season) { 
     console.log(">>season is" + season); 
    }, 

    report: function() { 
     console.log(">>report"); 
     this.inner_object.inner_function(this.print_season("winter")); 
    }, 

    inner_object: { 
     inner_function: function(callback) { 
      console.log(">>inner_function=" + callback()); 
     } 
    } 
} 

tony.report(); 

然而,當我做的函數被調用,而不是過去了,我結束了:

TypeError: callback is not a function 
    console.log(">>inner_function=" + callback()); 

如何具體參數傳遞給函數在這種情況下,但是,以確保它不調用?

謝謝。

回答

0

您在調用print_season

嘗試類似這樣的東西。

this.inner_object.inner_function(function() { this.print_season("winter") }); 
0

試試這個:

tony = { 
print_season: function (season) { 
    console.log(">>season is" + season); 
}, 

report: function() { 
    console.log(">>report"); 
    this.inner_object.inner_function(function(){this.print_season("winter")}); 
}, 

inner_object: { 
    inner_function: function(callback) { 
     console.log(">>inner_function=" + callback()); 
    } 
} 
} 
tony.report(); 

或者這樣:

tony = { 
print_season: function (season) { 
return function(){ 
    console.log(">>season is" + season); 
} 
}, 

report: function() { 
    console.log(">>report"); 
    this.inner_object.inner_function(this.print_season("winter")); 
}, 

inner_object: { 
    inner_function: function(callback) { 
     console.log(">>inner_function=" + callback()); 
    } 
} 
} 
tony.report(); 

的目標是有一個函數(回調)沒有別的東西。

1

您沒有傳遞函數。

你實際上只是路過undefined


威力print_season返回一個回調函數:

... 

print_season: function (season) { 
    // return a callback function 
    return function() { 
     console.log(">>season is" + season); 
    }; 
}, 

... 
+0

我覺得OP是意識到了這一點:*「然而,當我函數被調用而不是傳遞,我最終得到:[...]「*。問題是*「如何在這種情況下使用特定參數傳遞函數,但要確保它不被調用?」* –

+0

Ahh ok會使更新,然後:-) – qwertynl

+0

@FelixKling我做了更新。 – qwertynl

相關問題