2013-12-11 4 views
0

В следующем коде я хочу передать ссылку на функцию 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

Я думаю, что ОП знает об этом: * "Тем не менее, когда я вызывается функция, а не передается, и я получаю: [...] "*. Вопрос: «Как передать функцию с определенными параметрами в этом случае, но чтобы убедиться, что она не вызывается?» * –

+0

Ahh ok сделает обновление, затем :-) – qwertynl

+0

@FelixKling Я сделал обновление. – qwertynl

Смежные вопросы