可有人請解釋這段代碼至極的我嘗試deceifer 它仍然看起來很滑稽我理解jQuery的Facebook登錄插件語法
因爲我需要Facebook的洛logic..and還因爲我想明白了什麼代碼does..scopewise等。
至極功能第一次運行時,一個外或內一個 這是編寫插件代碼的另一種方式..
var openid = {
},doJsFacebookLogin: function (a) {
window.FB.login(function (b) {
b.authResponse && (b = "https://stackoverflow.com/users/oauth/facebook/js?accessToken=" + encodeURI(b.authResponse.accessToken),
a && (b += "&returnUrl=" + encodeURI(a)), window.location = b)
}, openid.facebook_login_params)
},
還做什麼逗號」在體內代表功能?
facebookLogin: function (a, b, c) {
c || ($("." + b).css("cursor", "wait"), openid.facebook_app_id ? openid.doJsFacebookLogin() : (this.setOAuthInfo(a.oauth_version, a.oauth_server), c || $("#openid_form").submit()))
},
etc...
感謝理查德..
非常感謝你的解釋,只是對代碼最後一個,我看不出有什麼代碼塊這一關...},openid.facebook_login_params)..我只是看到一個右括號至極顯然是在外部功能的身體? – Richard 2012-08-04 18:31:50
的'}'關閉「內」功能的功能體(這是一個「匿名」的功能,因爲它沒有分配給它的名字),以及')'然後關閉被賦予參數列表函數window.FB.login。所以它實際上是函數window.FB.login的調用,它的第一個參數是一個匿名函數,第二個參數是一個「openid.facebook_login_params」對象。 [...] – CBroe 2012-08-04 19:39:01
[續]]將函數引用作爲參數傳遞給另一個函數稱爲「回調函數」 - 當「外部」函數完成必須完成的操作時,它會調用「內部」函數,通常會給它一些參數它本身就是創建/請求的。在JavaScript中這是一個非常普遍的概念,特別是當涉及到異步工作流時(這通常是使用Facebook API方法時的情況,因爲他們必須發出HTTP請求,這需要一些時間 - 否則瀏覽器的用戶界面將會「凍結」直到請求完成)。 – CBroe 2012-08-04 19:40:04