Ссылки на другие функции из JavaScript с пространством имен - PullRequest
0 голосов
/ 06 декабря 2009

Итак, я пытаюсь объединить кучу кода в несколько хороших функций NameSpaced, но мне тяжело заставить его работать вместе. Например, у меня есть это (отредактировано для ясности):

YW.FB = function() {
   return {
        init: function(fncSuc, fncFail) {
                FB.init(APIKey, "/services/fbconnect/xd_receiver.htm");
                FB.Bootstrap.requireFeatures(["Connect"]);
                if(typeof fncSuc=='function') fncSuc();
    },

        login: function(fncSuc) {
            this.FB.Connect.requireSession(function() { 
                if(typeof fncSuc=='function') fncSuc();
            });
      },
        getUserInfo: function() {
            var userInfo = new Object;
            FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid],["name"],function(result, ex){
                userInfo.name = result[0]['name'];
                userInfo.uid = result[0]['uid'];
                userInfo.url  = FBName.replace(/\s+/g, '-');
                return userInfo;
            })
        }
   };
}();

На обычной странице я могу просто сделать:

  FB.init(APIKey, "/services/fbconnect/xd_receiver.htm");
  FB.Bootstrap.requireFeatures(["Connect"]);
  var userInfo = new Object;
  FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid],["name"],function(result, ex){
                userInfo.name = result[0]['name'];
                userInfo.uid = result[0]['uid'];
                userInfo.url  = FBName.replace(/\s+/g, '-');
                return userInfo;
            })

И это работает.

Я пытался сделать:

YW.init();
YW.login();
YW.getUserInfo();

Но это не работает. Я продолжаю получать "FB.Facebook не определено" от YW.getUserInfo Я мог бы делать все это неправильно. Таким образом, сотрудники FB.init, FB.Facebook используют библиотеки Facebook Connect. Я все делаю неправильно?

1 Ответ

1 голос
/ 06 декабря 2009

Если вы посмотрите на JavaScript, который ваш браузер проанализировал в Firebug или аналогичном веб-отладчике, вы видите там JavaScript Facebook Connect? Похоже, что он не находится в области видимости, а поскольку FB находится на глобальном уровне, это означает, что он вообще не находится в области видимости. Не имеет ничего общего с пространствами имен. Глобальный в JavaScript везде глобален.

...