2010-06-26 74 views
1

這是Facebook Developers網站的一個片段。這是什麼Javascript代碼?解釋

<div id="info"></div> 
<script> 
var 
    info = document.getElementById('info'), 
    update = function(response) { 
    if (!response.session) { 
     info.innerHTML = '<em>You must login using the controls at the top.</em>'; 
     return; 
    } 

    FB.api(
     { 
     method: 'fql.query', 
     query: 'SELECT name, pic_square FROM user WHERE uid=' + response.session.uid 
     }, 
     function(response) { 
     info.innerHTML = (
      '<img src="' + response[0].pic_square + '"> ' + 
      response[0].name 
     ); 
     } 
    ); 
    }; 

// update on login, logout, and once on page load 
FB.Event.subscribe('auth.login', update); 
FB.Event.subscribe('auth.logout', update); 
FB.getLoginStatus(update); 
</script> 

以上,可以請你告訴我什麼是更新變量,它的類型和工作原理,並分配的結束位置,誰調用這個函數?

其次,調用FB.api的第一個參數是什麼?它是什麼類型的對象?我相信第二個是回調函數吧?

回答

-1

第一個參數只是一個字符串,看起來像名稱空間soap-ish事件名稱。第二個確實是一個函數,必須用作某種回調函數。

+0

什麼? '{method:'fql.query',query:'SELECT name,pic_square FROM user WHERE uid ='+ response.session.uid}'不是一個字符串... – 2010-06-26 15:55:00

+0

它不僅僅是一個字符串,它的JSON。 – 2010-06-26 16:00:48

+0

對不起,以爲他的意思是'fql.query' - 繼續。 – 2010-06-26 16:41:10

0

更新是一個功能。在JavaScript中,你可以通過

var update = function() { 
    // body 
}; 

function update() { 
    // body 
} 

而作爲函數定義一個函數或者是一等公民,你可以將它們作爲一個參數,如FB.Event.subscribe呼叫。

也可以直列使用匿名函數定義功能:

FB.Event.subscribe('auth.login', function() { 
    // body 
}); 

的FB.api呼叫的第一個參數是一個對象,具有兩個鍵(鍵 - 值對的集合):「方法'和'查詢',其中有字符串作爲它們的值。

你可以閱讀更多關於JavaScript對象符號(JSON)位置:http://json.org/

1

更新是回調到該功能。它將根據「訂閱」執行的內容執行。傳入的數據是JSON。它是用於發送數據的純文本數據表示語言。

它不是SOAP-ish,它的JSON。用於在JavaScript中來回傳遞數據。它非常輕巧。 http://en.wikipedia.org/wiki/JSON

它將一個對象傳遞給具有兩個字符串成員的方法和查詢。