从名称空间JavaScript引用其他函数

时间:2009-12-06 00:48:51

标签: javascript facebook namespaces

所以我试图将一堆代码合并到一些不错的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();

但它不起作用。我一直从YW.getUserInfo获得'FB.Facebook is undefined' 我也可能做错了。所以FB.init,FB.Facebook的东西正在使用facebook连接库。我做错了吗?

1 个答案:

答案 0 :(得分:1)

如果您查看浏览器在Firebug或类似的Web调试器中解析的JavaScript,您会在那里看到Facebook Connect JavaScript吗?看起来它不在范围内,并且因为FB处于全球水平,这意味着它根本不在范围内。与命名空间无关。 JavaScript中的全球化无处不在。