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

VNIふぇりあ16歳へ


ゼロからわかる現代JavaScript

54.パターン「プロパティでのアクセス」

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

そのうちの一つに

各クラスの内部変数にはプロパティでアクセスする

というものがあります。

とにかく、極力、「オブジェクト.プロパティ」という
呼び出し方を避けるというものです。

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

//プロパティでアクセスするのが基本
document.write(mc.getStudent() + "はLEVEL5<br>");
document.write(mc.getStudent2() + "はLEVEL4<br>");

document.write("とある科学の超電磁砲<br><br>");

mc.setNewStudent("食蜂操祈");

//メンバーを表示
mc.ShowMemberA(mc);

var mc2 = mc.Cratejudgment();
mc2.setNewStudent("佐天涙子");

//メンバーを表示
mc.ShowMemberB(mc2);

function classA() {
  var obj = this;
  //クラス変数
  obj.student = "御坂美琴";
  obj.student2 = "白井黒子";
  obj.student3;

  //getプロパティ
  obj.getStudent = function () {
    return obj.student;
  }

  //getプロパティ
  obj.getStudent2 = function () {
    return obj.student2;
  }

  //get/setプロパティ
  obj.getNewStudent = function () {
    return obj.student3;
  }
  obj.setNewStudent = function (x) {
    obj.student3 = x;
  }

  //メソッド
  obj.ShowMemberA = function (x) {
    document.write(x.student + "<br>");
    document.write(x.student2 + "<br>");
    document.write(x.student3 + "<br>");
  }

  //メソッド
  obj.ShowMemberB = function (x) {
    document.write(x.student + "<br>");
    document.write(x.student2 + "<br>");
  }


  //Bクラスのオブジェクトを返す
  obj.Cratejudgment = function () {
    return new classB();
  }
}

function classB() {
  var obj = this;
  //クラス変数
  obj.student = "初春飾利";
  obj.student2;

  //getプロパティ
  obj.getStudent1 = function () {
    return obj.student1;
  }

  //getプロパティ
  obj.getStudent2 = function () {
    return obj.student2;
  }

  //get/setプロパティ
  obj.getNewStudent = function () {
    return obj.student2;
  }
  obj.setNewStudent = function (x) {
    obj.student2 = x;
  }
}

ソースは長いだけでたいしたことはしていません
ただし、前回のオブジェクトを返すパターンを使い

機能をAクラスに集約し、Bクラスはメンバー変数の保持だけをしています。

実行結果

コラム:

このパターンはおそらく海外のJavaの上手な人が
考えたのかなと思います。

「ただの読み書きのメソッド」です。

しかし、いつしかC#に機能として実装されているのが面白い点です。

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