ここは、ふぇりあ16歳が不定期に連載しているオンライン小説のページです。
VNIふぇりあ16歳へ
ゼロからわかる現代JavaScript
57.パターン「オブジェクトをもつデータークラス」
オブジェクト指向はいろいろな使い方をする事ができます。
前回のクラスに、さらにオブジェクトを変数としてもたせたもの。
こうすることでデーターの扱いがより便利になります。
今回使用するソースコード |
//必要な分だけ生徒のオブジェクトを作る var student1 = new student(); //情報を入力 プロパティに変更 student1.setName("御坂美琴"); student1.setSlill("エレクトロマスター"); student1.setLevel("LEVEL5"); student1.setHobby("ゲコ太集め"); student1.setSchool("常盤台中学校"); var student2 = new student(); //情報を入力 プロパティに変更 student2.setName("白井黒子"); student2.setSlill("テレポーター"); student2.setLevel("LEVEL5"); student2.setHobby("?"); student2.setSchool("常盤台中学校"); var item1 = new item(); item1.setName("ゲーセンのコイン"); item1.setPrice("100円"); var item2 = new item(); item2.setName("金属矢"); item2.setPrice("?円"); document.write("生徒のデーター表示<hr>"); student1.setItem(item1); student2.setItem(item2); //デーを表示 クラスメソッドに変更 student1.showdata(student1); student1.showdata(student2); //構造体のようなクラス function student() { var obj = this; //クラス変数 obj.name = null; obj.skill = null; obj.level = null; obj.hobby = null; obj.school = null; //クラス変数にオブジェクト(クラス)を保持する obj.item = null; //get/setプロパティ obj.getName = function () { return obj.name; } obj.setName = function (x) { obj.name = x; } //get/setプロパティ obj.getSkill = function () { return obj.skill; } obj.setSlill = 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; } //get/setプロパティ obj.getSchool = function () { return obj.school; } obj.setSchool = function (x) { obj.school = x; } //get/setプロパティ obj.getItem = function () { return obj.item; } obj.setItem = function (x) { obj.item = x; } //データー表示用メソッド obj.showdata = function (x) { document.write(x.name + ":" + x.skill + x.level + "/趣味:" + x.hobby + "所属:" + x.school + "<br>" + "アイテム:" + //ネストしてアクセス //(オブジェクトからオブジェクトを呼ぶ→データ取得) x.getItem().getName() + x.getItem().getPrice() + "<br>"); } } function item() { var obj = this; obj.name = null; obj.price = null; //get/setプロパティ obj.getName = function () { return obj.name; } obj.setName = function (x) { obj.name = x; } //get/setプロパティ obj.getPrice = function () { return obj.price; } obj.setPrice = function (x) { obj.price = x; } } |
それだけでなく、itemオブジェクトを呼び出したときに
オブジェクト.メソッド().メソッド()
としてネストして呼んでいる点に注目です。
実行結果
コラム:
つまり「生徒」のデータのクラスが、「持ち物」のクラス(構造体ふうの)を
もっていることになります。
(C)著作権はふぇりあ16歳とお兄ちゃんにあります。
無断転載、盗用は禁止です。