ここは、ふぇりあ16歳が不定期に連載しているオンライン小説のページです。

VNIふぇりあ16歳へ


ゼロからわかる現代JavaScript

58.パターン「ラッパークラス」

オブジェクト指向はいろいろな使い方をする事ができます。

今度は、クラスを、包み込み元のクラスに機能を追加したクラス

ラッパークラス

を作ってみましょう。

方法としては、新しいクラスに包み込むクラスをオブジェクトとして持たせるだけです

今回使用するソースコード
var gekota = new rapper();

//追加されたプロパティ
document.write(gekota.getName());
document.write("<br>は<br>");
//元の御坂クラスのプロパティも当然呼び出せる。
document.write(gekota.getClass().getLevel() + "の" + gekota.getClass().getSkill());

//クラスの継承のように御坂クラスを包み込み新しいプロパティを追加する
function rapper() {
  var obj = this;
  obj.name = "ゲコ太仮面";
  //御坂クラスをオブジェクトにいれます
  obj.class = new misaka();

  //get/setプロパティ
  obj.getName = function () {
    return obj.name;
  }
  obj.setName = function (x) {
    obj.name = x;
  }
  //get/setプロパティ
  obj.getClass = function () {
    return obj.class;
  }
  obj.setClass = function (x) {
    obj.class = x;
  }
}
//御坂クラス
function misaka() {
  var obj = this;
  obj.name = "御坂美琴";
  obj.skill = "エレクトロマスター";
  obj.level = "LEVEL5";
  obj.hobby = "ゲコ太集め";

  //get/setプロパティ
  obj.getName = function () {
    return obj.name;
  }
  obj.setName = function (x) {
    obj.name = x;
  }
  //get/setプロパティ
  obj.getSkill = function () {
    return obj.skill;
  }
  obj.setSkill = function (x) {
    obj.skill = x;
  }
  //get/setプロパティ
  obj.getLevel = function () {
    return obj.level;
  }
  obj.setLevel = function (x) {
    obj.level = x;
  }
  //get/setプロパティ
  obj.getHobby = function () {
    return obj.hobby;
  }
  obj.setHobby = function (x) {
    obj.hobby = x;
  }
}

クラスの継承の別パターンだと思った方がよさそうです。

実行結果

コラム:

ゲコ太仮面って一帯何者なんでしょうね?
月光仮面にも似ていますね。

(C)著作権はふぇりあ16歳とお兄ちゃんにあります。
無断転載、盗用は禁止です。