2013-04-23 28 views
0

試圖定義了幾個功能,像這樣:問題而定義的jQuery函數

user = (function() { 
    var friends_list = (function() { 
     $.get('/ajax/user/friends_list', function(data) { 
        ...... 

所以我可以在需要它像這樣user.friends_list()但現在後來打電話給他們,我唯一得到的是這樣的下面錯誤:

TypeError: Object function() { 
var friends_list = (function() { 
$.get(.... 

我只是不知道在哪裏看,有什麼建議嗎?

+0

你能告訴的功能只是給起始不會幫助示例代碼段。在函數結束時你在回顧什麼? – 2013-04-23 09:44:37

+0

我實際上不回報任何東西,只是根據回答找出dom – Alex 2013-04-23 09:56:02

回答

1

使用戶對象,而不是功能

var user = { 
    friends_list : function(){ 
    $.get('/ajax/user/friends_list', function(data) { 
       ...... 
    } 
} 

,並調用它像.. user.friends_list()

fiddle here

+0

這樣做......出於某種原因,Arun的使用'friends_list = function'的建議不起作用... – Alex 2013-04-23 09:49:24

+0

是的,他有'='那裏應該是':'for一個對象 – bipen 2013-04-23 09:51:14

+1

他使用'=',其中':'應該被使用。如果你想獲得一些私有變量的封裝,請參閱我的答案。 – 2013-04-23 09:51:15

2

您需要創建用戶爲對象,你的情況friends_list是一個封閉的方法,這將是availble的功能外

user = { 
    friends_list : function(){ 
     .... 
    } 
} 
+0

應該是'friend_list:function',而不是'='。 :) – 2013-04-23 09:50:24

+1

@MichałRus對不起,更正 – 2013-04-23 09:51:12

1

您在此處使用封口,因此friend_listuser的外部不可見。

如果你想使用閉包,隱藏某些變量,以最好的方式出口friend_list是:

(function(){ 
    var somePrivateVariable; 

    window.user = {}; 
    window.user.friend_list = function() { 
     // make use of somePrivateVariable... 
    }; 
})(); 
0

你可以看看這個link

下面是代碼:

var global = {}; 

global.sayHello = function (x){ 
    //do your code here 
     console.log('Hello ' + x); 
}; 
global.sayHello('Kevin'); 
0
user = new function(){ 
    var private_variable; 
    function private_method(){} 

    this.global_variable = ''; 
    this.global_method = function(){}; 
}