* クラスをパッケージ(名前空間)にまとめる [#we360167]

** 目的 [#iaf1fd16]
BarClassとBazClassという2つのクラスをFooPackageにまとめる。

** ファイル構造 [#f77d05f9]

- index.html
- FooPackage.BarClass.js
- FooPackage.BazClass.js

** ソースコード [#b75ee09a]
*** FooPackage.BarClass.js [#ta77e181]
 var FooPackage = FooPackage || {};
 (function(FooPackage) {
     var BarClass = (function() {
 
         function BarClass(mesg) {
             this.mesg = mesg;
         }
 
         BarClass.prototype.getMesg = function() {
             return this.mesg;
         };
 
         BarClass.prototype.getBazMesg = function() {
             var baz = new FooPackage.BazClass("DEBUG: Foo::Baz From Bar");
             return baz.getMesg();
         };
 
         return BarClass;
     })();
 
     FooPackage.BarClass = BarClass;
 })(FooPackage);
 
*** FooPackage.BazClass.js [#z1a15793]
 var FooPackage = FooPackage || {};
 (function(FooPackage) {
     var BazClass = (function() {
 
         function BazClass(mesg) {
             this.mesg = mesg;
         }
 
         BazClass.prototype.getMesg = function() {
             return this.mesg;
         };
 
         return BazClass;
     })();
 
     FooPackage.BazClass = BazClass;
 })(FooPackage);

*** index.html [#k529fffa]
 <!DOCTYPE html>
 <html lang="ja">
   <head>
     <meta charset="UTF-8" />
     <script src="FooPackage.BarClass.js"></script>
     <script src="FooPackage.BazClass.js"></script>
     <script>
       var bar = new FooPackage.BarClass("DEBUG: Foo::Bar");
       var baz = new FooPackage.BazClass("DEBUG: Foo::Baz");
       console.log(bar.getMesg());
       console.log(baz.getMesg());
       console.log(bar.getBazMesg());
     </script>
   </head>
   <body>
     <h1>JS</h1>
   </body>
 </html>

** index.htmlの実行結果 [#x9625c51]
 DEBUG: Foo::Bar
 DEBUG: Foo::Baz
 DEBUG: Foo::Baz From Bar

** サブパッケージを作成する [#mf29cc91]
BarClassをサブパッケージにまとめる場合は、上のコードを以下のように変える。
 FooPackage.SubPackage = FooPackage.SubPackage || {};
 FooPackage.SubPackage.BarClass = BarClass;


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS