2015-06-21 185 views
0

通常我做這樣的回調:該對象調用回調有這樣的方法:調用匿名函數

this.set_success_callback = function(obj, func){ 
    this.success_callback_obj = obj; 
    this.success_callback_func = func; 
} 

this.make_success_callback = function(msg){ 
    this.success_callback_obj[this.success_callback_func](msg); 
} 

然後當我安裝了對象我assgin這樣的回調:

var obj = new ... 
    obj.set_success_callback(this, "sayHello"); 

這個按預期工作。 但是,當我想這樣定義回調:

obj.set_success_callback(this, this.sayHello); 

並更改make_success_callback功能:

this.success_callback_ob.call(this.success_callback_func, msg) 

我得到這個錯誤:

Object [object Object] has no method 'call' 

什麼我必須改變才能使它工作嗎?我如何在這個上調用sayHello函數?謝謝

+0

這個問題中有很多未知數。你能提供一個最低限度的可重複性程序嗎? – thefourtheye

回答

2

你只是混淆了對象與函數。它應該是:

this.success_callback_func.call(this.success_callback_ob, msg) 

Function具有.call() method,採用一個上下文對象作爲第一個參數。 Object沒有.call()方法。

+0

謝謝,儘管我閱讀了文檔,但我沒有正確地理解它:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call –