这个Javascript代码是什么?说明

时间:2010-06-26 15:51:01

标签: javascript facebook

这是Facebook开发者网站的一个片段。

<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 电话的第一个参数是什么?它是什么类型的物体?我相信第二个是回调函数吗?

3 个答案:

答案 0 :(得分:1)

更新是对该功能的回调。它将根据“订阅”的内容执行。传入的数据是JSON。它是一种用于发送数据的纯文本数据表示语言。

它不是SOAP-ish,它的JSON。用于在javascript中来回传递数据。它非常轻巧。 http://en.wikipedia.org/wiki/JSON

它将一个对象传递给FB.api,它有两个字符串成员:method和query。

答案 1 :(得分:0)

更新是一个功能。在JavaScript中,您可以通过

定义一个函数
var update = function () {
    // body
};

function update() {
    // body
}

由于函数是一等公民,您可以将它们作为参数传递,就像在FB.Event.subscribe调用中一样。

您还可以使用匿名函数定义内联函数:

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

FB.api调用的第一个参数是一个对象(键值对的集合),它有两个键:'method'和'query',它们以字符串作为值。

您可以在此处阅读有关JavaScript对象表示法(JSON)的更多信息:http://json.org/

答案 2 :(得分:-1)

第一个参数只是一个字符串,看起来像一个命名空间的soap-ish事件名称。第二个确实是一个函数,必须用作某种回调。