base.jsでオブジェクト指向プログラミング

base.jsとは

base.jsとは、インスタンスベースのオブジェクト指向をコーディングするためのJavaScriptライブラリです。
このライブラリを使えば、専門的な知識を使わずに、少ない記述量で、コードを書けます。SIEのコードを軽量化するために開発しています。ですので、SIEのパッケージのtool/funcprotoの中にあります。
この記事では、base.jsの使い方を、簡単に説明していきます。想定している利用者は、Object.createがいまひとつ扱いづらいと考えている人です。

サンプルコード

まず、次のサンプルコードで、base.jsを使ったコードをさくっと書いてみましょう。

 base("$dog").mix( {
      hoge: function() {
              return "わんわん";
            }
   } )
   .up("$cat")
   .mix( {
      hogehoge: function() {
                  return "にゃあにゃあ";
                }
    } );

 base("$dog").hoge();          // "わんわん"
 base("$dog").$cat.hoge();     // "わんわん"
 base("$dog").$cat.hogehoge(); // "にゃあにゃあ"

わずか12行で、$dogオブジェクトと、それを継承した$catオブジェクトができました。それぞれのオブジェクトには、hogeメソッドとhogehogeメソッドが付いています。
この書き方においては、クラスの設計といった専門的な知識が必要ないので、さくさくとコードを書いていけます。
もう少し、base.jsの基本的な書き方について、詳しく見ていくことにしましょう。

オブジェクト

オブジェクトの作り方については、base関数の引数に、オブジェクトの名前となる文字列を書きます。

 base("$dog");

これで、$dogという名前のオブジェクトができました。
この$dogオブジェクトを呼び出したいときには、同じようにbase関数を実行すればOKです。

 base("$dog"); // $dog オブジェクト呼び出し

 /*プロパティの追加*/
 base("$dog").hoge = 12;
 base("$dog").hoge; // 12

継承

さらに、$catオブジェクトを作ります。$dogを継承させるには、upメソッドを使います。

 base("$dog").up("$cat");

継承がワンライナーで済みました。
ところで、新しく作られたオブジェクトは、どのように呼び出せばいいのでしょうか。upメソッドは、引数の名前と同じプロパティを自動で作ってくれるので、次のようなコードで呼び出せます。

 base("$dog").$cat; //$cat オブジェクト

また、mixメソッドを使って、次のように書くやり方が賢いかもしれません。

 base("$dog").mix( function(_) {
   _.$cat; // $cat オブジェクト
 });

この$catは$dogオブジェクトを継承しているため、$dogのメソッドをすべて使うことができます。最初に説明したサンプルコードでも、

 base("$dog").hoge();          // "わんわん"
 base("$dog").$cat.hoge();     // "わんわん"

というように、同じメソッドを使えていますね。
当然、upメソッドも同様に使えるので、ワンライナーで複数のオブジェクトを生成可能です。

 base("$dog").$cat.up("$hoge").up("$hog");

まとめ

ここで、今回の記事をまとめておきます。

  1. base.jsはインスタンスベースのオブジェクト指向を書けるライブラリ
  2. base関数を使ってオブジェクト定義
  3. mixメソッドやupメソッドを活用しながら、プログラミングを勧めていく形

今後の予定

mixメソッドやupメソッドの解説は、後日、改めて説明します。新しい機能が使い物になりそうであれば、それもそのときの解説に入れるでしょう。