2012-05-11 17 views
0

私は&を書く必要があります。現在のプロジェクト用に多くのJavaScriptコードを管理しています。javascriptファイルを管理し、JavaScript/jQuery関数をカプセル化する方法

主にモジュールに基づいて複数の.jsファイルに分割します。

だから、今私は、例えば持っている:

Map.js // deal with google map issue 
Common.js // common functions that will share by all modules 
User.js // user module js code 
Geofence.js // geofence module js code 
etc..... 

は、例えば、私のuser.jsの内側

を提出私は唯一のuser.jsファイル内で使用された関数を宣言したい場合は、外部からアクセスできない私に何ができる?

var User = {}; 

User.registerModule = function() { 
    $('#user').click(function() { 
     Common.showLeftScrollbar(); 

     getAllUsers(); 

     // ... 
    }); 
} 

function getAllUsers(){ // how to hide this function 
    // get 
    return users; 
} 

私のホームページでは、複数の.jsファイルで調整する必要があります。アクセスを許可するものにアクセスする。

$(document).ready(function (data) { 

     GoogleMap.initialiseGoogleMap(); 

     Common.refreshRightScrollbar(); 

     User.registerModule(); 

     // ... 
    }); 

jsを書くのは初めてです。書籍全体を勉強するのに十分な時間ではありません。だから、あなたの意見では、この構造は多くのjsコードでokですか?外部にアクセスしたくない機能を隠す方法はありますか?範囲内の

答えて

2

あなただけの即時自己実行でコードを囲み異なる可能性

  1. を持っている機能を非表示にします匿名機能

    var User = {}; // this should not be enclosed too 
    
    (function() { 
        User.registerModule = function() { 
         $('#user').click(function() { 
          Common.showLeftScrollbar(); 
    
          getAllUsers(); 
    
          // ... 
         }); 
        } 
    
        function getAllUsers(){ // how to hide this function 
         // get 
         return users; 
        } 
    })(); 
    
  2. 囲いtha User.registerModule関数内トン機能

    User.registerModule = function() { 
        function getAllUsers() { ... } 
    
        $('#user').click(function() { 
         Common.showLeftScrollbar(); 
    
         getAllUsers(); 
    
         // ... 
        }); 
    } 
    
+0

私は必要ですか?匿名機能の開始時に? – Timeless

+0

いいえ、すでに前のステートメントの最後にセミコロンが挿入されています: 'var User = {};' – fcalderan

1

置き、この機能を:

User.registerModule = function() { 
    function getAllUsers(){ // how to hide this function 
     // get 
     return users; 
    } 
    $('#user').click(function() { 
     Common.showLeftScrollbar(); 

     getAllUsers(); // returns users 

     // ... 
    }); 
} 

そして、それはプライベートになります。あなたはこの関数を呼び出そうと

今ではundefinedなり外:

getAllUsers(); // undefined. 
+0

感謝。 User.jsファイルの中で何度もこの関数を使用する必要がある場合はどうすればいいですか?構造には明らかな問題がありますか? – Timeless

+0

あなたは 'User.registerModule'の中でこの関数を何度も使うことができます。他の場所で使用する必要がある場合は、別のスコープを使用してください。無名関数のように。たとえば、すべてのUser.jsファイルを(function(){ここにUser.js content})();でスコープできます。 – antyrat

関連する問題