2010-06-26 84 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

它将一个对象传递给具有两个字符串成员的方法和查询。