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");
まとめ
ここで、今回の記事をまとめておきます。
今後の予定
mixメソッドやupメソッドの解説は、後日、改めて説明します。新しい機能が使い物になりそうであれば、それもそのときの解説に入れるでしょう。