2012-08-27 29 views
1

所以我一直試圖讓這個回調對象的內部工作,我只是想知道如果:傳遞引用一個對象的方法給另一個函數在Javascript

1)這是可能的, 2)特殊的語法是必須的。

因此,而不是僅僅有一個經常宣稱的功能:

function callback() {} 

又路過那個給另一個函數的引用:

DoSomething的(回調)

我試着傳遞一個對象的屬性,包含功能:

{ 
    prop: function() {} 
    } 

and se nd作爲回電。

的問題是,通過道具的參考拋出一個錯誤:

doSomething(prop): 

拋出:Uncaught SyntaxError: Unexpected token :

如果需要一個完整的例子,讓我知道。

感謝, 肯

**編輯**

好了,所以我打字比較完善的例子一些混亂之後。

var obj = { 
    init: function() { 
     this.some_function(this.callback_function) 
    }, 
    some_function: function(callback) { 
     callback(); 
    }, 
    callback_function: function() { 
     // Callback! 
    } 
} 

此,除非我把拋出的意外標記錯誤的()當我通過this.callback_function作爲參數傳遞給some_function()。

感謝和抱歉沒有發佈一個更全面的例子。

+0

「這是拋出意外的令牌錯誤」:不,[它不](http://jsfiddle.net/xbgSQ/)。請記住,當調用obj.callback_function時,'this'關鍵字不會*引用'obj'。 – MaxArt

回答

1

只是傳遞方法:

var obj = { 
    prop: function() {} 
}; 
doSomething(obj.prop); 
+0

對不起,我會發佈一個完整的例子 - 但這是我目前正在做的。引發意外的令牌錯誤,除非您使用參數包含()。 – Ken

+0

@Ken我還在等你的例子。我不確定我有問題,但恐怕你的實際問題是Javascript語法。 – MaxArt

+0

抱歉這麼長時間,我正在家庭度假,並在發佈後立即穿梭於門外。 – Ken

0

你打錯在doSomething(prop):

+0

對不起 - 我從我的手機上輸入。現在打個完整的例子。 – Ken

0

末分號當你做obj.func作爲一個參數,它傳遞的功能失去this範圍。

some_function: function(callback) { 
    callback.call(this); 
}, 
0

對不起,我遲到響應(我是在度假),這是一個語法錯誤,我忘了在我的對象方法中的逗號分隔符。

1

我意識到,這不是OP的問題的解決方案,但我谷歌「傳遞對象的方法作爲回調」,這就出現了。我還發現一個鏈接http://bitstructures.com/2007/11/javascript-method-callbacks.html幫助我瞭解如何在js中完成它。 HTH

+0

感謝您的回覆:)雖然我很久以前就已經解決了,但很高興知道社區是一個非常有用的社區。 – Ken

相關問題